Проблема CodingBat string_bits решена с помощью цикла Swit for

Ферраккем Бхуйян
Question:
 
 Given a string, return a new string made of every other char starting with the first, so "Hello" yields "Hlo".

 string_bits('Hello') → 'Hlo'
 string_bits('Hi') → 'H'
 string_bits('Heeololeo') → 'Hello'
 
Solution:

func string_bits(userString: String) ->String{
    var myString = ""
    
    
    for(i, v) in userString.enumerated(){
        if i % 2 == 0{
            myString.append(v)
        }
    }
    return myString
}

Output: Hello

Теперь мой вопрос: есть ли что-нибудь, что я могу быстро перебрать свой индекс, как это делают object-c, c или другие языки программирования. Например:

result = ""
  # On each iteration, add the substring of the chars 0..i
  for i in range(len(str)):
    result = result + str[:i+1] 
  return result

str [: i + 1] Здесь я добавляю +1 к текущему индексу и получаю значение индекса. Как я могу сделать это быстро.

Лео Дабус
extension Collection {
    func everyNthIndex(n: Int) -> UnfoldSequence<Index,Index> {
        sequence(state: startIndex) { index in
            guard index < endIndex else { return nil }
            defer { index = self.index(index, offsetBy: n, limitedBy: endIndex) ?? endIndex }
            return index
        }
    }
}

let alphabet = "abcdefghijklmnopqrstuvwxyz"
for evenIndex in alphabet.everyNthIndex(n: 2) {
    print("evenIndex", evenIndex, "char:", alphabet[evenIndex])
}
for oddIndex in alphabet.dropFirst().everyNthIndex(n: 2) {
    print("oddIndex", oddIndex, "char:", alphabet[oddIndex])
}

обычный подход с использованием цикла while:

var index = alphabet.startIndex
while index < alphabet.endIndex {
    defer { index = alphabet.index(index, offsetBy: 1) }
    print(alphabet[index])
    print(index)
}

или перечисляя строковые индексы:

func string_bits(userString: String) -> String {
    var myString = ""
    for (offset,index) in userString.indices.enumerated() {
        if offset.isMultiple(of: 2) {
            myString.append(userString[index])
        }
    }
    return myString
}

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

Функциональное программирование в Swit для распределения элементов массива по правильным «корзинам»

рекурсивное упражнение по codingbat

Рекурсия codingbat

Есть ли более простой способ сделать string_match из CodingBat в Python?

Swit map: error: невозможно вызвать 'map' со списком аргументов типа '((_) -> _)'

Codingbat strDist: упражнение на рекурсию

CodingBat sameEnds работает со строками

twoTwo загадка от CodingBat

Практический вопрос CodingBat - строки Python

Java Codingbat notAlone - почему он не работает для этого конкретного примера

проблема вычитания рекурсии от CodingBat.com

Есть ли более простое решение для Codingbat fix45?

codingbat Проблема: close_far | провалив только один тест | пятка

Défi Codingbat : maxBlock

Я не понимаю, почему этот код работает (Codingbat Array2 tenRun)

Array-2 zeromax codingbat

CodingBat-Excercise: возвращает истину, если данный массив содержит несчастливую 1 в первых 2 или последних 2 позициях в массиве.

CodingBat AP-1,任务号。4?

Как распечатать результат из функции (мое расширение вопроса Codingbat: Warmup-1> near_hundred)

Есть ли более простой способ сделать rotate_left3 на CodingBat Python?

Codingbat challenge: mirrorEnds Stream API Solution

Я получаю сообщение об ошибке Time Out, когда отправляю свой код на CodingBat Python (https://codingbat.com/prob/p118406)

list index out of range - CodingBat Problem - Has22

CodingBat split53; Confused about the right way to use returns

CodingBat Python make_chocolate code failing in "other tests"

Défi Codingbat : solution d'API zeroFront Stream

Défi Codingbat : solution d'API de flux sumNumbers

Défi Codingbat : mirrorEnds utilisant l'API Stream

Défi Codingbat : solution d'API de flux zeroMax

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    TypeError: store.getState não é uma função. (Em 'store.getState ()', 'store.getState' é indefinido, como posso resolver esse problema?

  3. 3

    В типе Observable <unknown> отсутствуют следующие свойства из типа Promise <any>.

  4. 4

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

  5. 5

    How to click an array of links in puppeteer?

  6. 6

    Merging legends in plotly subplot

  7. 7

    ViewPager2 мигает / перезагружается при смахивании

  8. 8

    Отчеты Fabric Debug Craslytic: регистрация, отсутствует идентификатор сборки, применить плагин: io.fabric

  9. 9

    How to normalize different curves drawn with geom = "step" when using stat_summary

  10. 10

    无法通过Vue在传单中加载pixiOverlay

  11. 11

    как я могу удалить vue cli 2?

  12. 12

    Как я могу нарисовать заполненный прямоугольник в JFreeChart?

  13. 13

    SQL Вычтите две строки друг от друга в одном столбце, чтобы получить результат

  14. 14

    Elasticsearch - Нечеткий поиск не дает предложения

  15. 15

    Single legend for Plotly subplot for line plots created from two data frames in R

  16. 16

    Описание моего типа Parser как серии преобразователей монад

  17. 17

    Как изменить цвета запятых и скобок в VS Code

  18. 18

    Сброс значения <input type = "time"> в Firefox

  19. 19

    Почему прокси в vue.config.js 404

  20. 20

    Как установить параметр -noverify с gradle ktx для робоэлектрических тестов Android?

  21. 21

    В чем разница между ifstream, ofstream и fstream?

популярныйтег

файл