2017-01-17 7 views
2

私はHackerRankのテストケースサンプルを実行してインタビューをコーディングするために自分自身を準備しようとしています。このプロセスに精通している場合は、通常、さまざまな行の文字列を持つ標準入力を受け取り、その質問が何を求めているかに基づいて情報を抽出します。私はnの整数を空白で区切った線(例:1 2 3 4 5)をあなたに与えるという多数の質問に出くわしました。この問題を解決するには、StringからInt[Int])の配列を外挿する必要があります。その後、私はコピー...Swift String API HackerRankの代わりに

func extractIntegers(_ s: String) -> [Int] { 
    let splits = s.characters.split { [" "].contains(String($0)) } 
    return splits.map { Int(String($0).trimmingCharacters(in: .whitespaces))! } 
} 

だから私は私の遊び場でそれをコーディングし、それは素晴らしい作品、私も私が作る複数のテストケースを実行し、それらはすべてが見事に合格:私は、この気の利いた方法を思い付きましたHackerRankのコードを実行して提出してください。そして、私はこれを手に入れます:

solution.swift:16:29: error: value of type 'String' has no member 'trimmingCharacters' 
return splits.map { Int(String($0).trimmingCharacters(in: .whitespaces))! } 

だから、おそらくHRはSwift 3のすべてを更新していないかもしれません。大きな問題ではない!私はよりクリーンなソリューションのアイデアを持っています!ここでは、次のとおりです。もちろん

func extractIntegers(_ s: String) -> [Int] { 
    return s.components(separatedBy: " ").map { Int($0)! } 
} 

.... AAAAANDDD:だから今、私は私がすべての文字をループ、スペースをチェックし、本当にずさんな方法を使用するように強制してい

solution.swift:15:12: error: value of type 'String' has no member 'components' 
return s.components(separatedBy: " ").map { Int($0)! } 

、スペースの間の範囲から配列に部分文字列を追加し、その配列をマップして返します。

誰でもSwiftのHRの不十分さを回避するための他のクリーンなアイデアはありますか?私が得ることができるどんな勧告も欲しいです!

ありがとうございます!

+0

これは変です。私はHRの両方の機能を試してみましたが、どちらも期待通りに機能しました。 - Btw、あなたの質問には実際の問題とは無関係のテキストがたくさんありますが、それを削除することをお勧めします。 –

+0

@MartinR - 真剣に彼らはあなたのために働いていますか?あなたのために働く可能性がありますが、私はできません。 – Pierce

+1

あなたはおそらく '輸入財団' –

答えて

5

String方法

func trimmingCharacters(in set: CharacterSet) -> String 
func components(separatedBy separator: String) -> [String] 

は実際財団 フレームワークで定義されたNSStringクラスのメソッドである、とスイフトに「架橋しました」。したがって、あなたのコードのコンパイル、 を作るために、あなたは

import Foundation 

を追加して行く持っていますが、あなたの第一の方法の少し簡略化されたバージョンは、財団をインポートせずに、純粋スウィフトと をコンパイルします。先行、末尾、中間の空白を処理します。

func extractIntegers(_ s: String) -> [Int] { 
    let splits = s.characters.split(separator: " ").map(String.init) 
    return splits.map { Int($0)! } 
} 

let a = extractIntegers(" 12 234 -567 4 ") 
print(a) // [12, 234, -567, 4] 
関連する問題