Open15
競技プログラミングメモ(Swift)
整数を受け取る
let n = Int(readLine()!)!
文字列を受け取る
let s = readLine()!
ifの基本形
文字列nameが"Swift"であれば文字列"Hello Swift"を表示する。"Kotlin"であれば文字列"Hello Kotlin"を表示する。そうでなければ文字列"Goodbye"を表示する。
let name = "Swift"
if name == "Swift" {
print("Hello Swift")
} else if name == "Kotlin" {
print("Hello Kotlin")
} else {
print("Goodbye")
}
// Hello Swift
文字列を1文字ずつ分割して配列にする
文字列"Hello world"を1文字ずつ分割して配列にする
let array = Array("Hello world")
print(array)
// ["H", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d"]
分割後の配列の要素は文字列型に見えるが、実際はCharacter型という文字型である。
要素を文字列と結合するときはString()
を使って文字列に変換する必要がある。
for-in文で配列内の要素を先頭から順に処理する
配列arrayの要素を先頭から順に表示する。
var array = [1,2,3,4,5,6]
for i in array {
print(i)
}
// 1
// 2
// 3
// 4
// 5
// 6
for-in文で配列内の要素を末尾から順に処理する
var array = [1,2,3,4,5,6]
for i in array.reversed() {
print(i)
}
// 6
// 5
// 4
// 3
// 2
// 1
大文字を小文字に変換
文字列"abc"を大文字に変換する
let s1 = "abc"
print(s1.uppercased())
// ABC
小文字を大文字に変換
文字列"ABC"を小文字に変換する
let s2 = "ABC"
print(s2.lowercased())
// abc
文字列の長さを取得する
let s = "hogehoge"
print(s.count)
// 8
半角スペースで区切られた数値を受け取る
以下の入力を受け取る。数値はInt型で受けとる。
12 34 56 78 90
let values = readLine()!.split(separator: " ").map { Int($0)! }
// [12, 34, 56, 78, 90]
半角スペースで区切られた文字列を受け取る
以下の入力を受け取る。
hogehoge hugahuga kokekokko
let values = readLine()!.split(separator: " ").map { String($0) }
// ["hogehoge", "hugahuga", "kokekokko"]
文字列の前から指定した文字数分だけ文字列を切り出す
文字列"ABCDEFG"の先頭5文字を切り出す。
let s1 = "ABCDEFG"
print(s1.prefix(5))
// ABCDE
文字列の後から指定した文字数分だけ文字列を切り出す
文字列"ABCDEFG"の後ろから5文字を切り出す。
let s2 = "ABCDEFG"
print(s2.suffix(5))
// CDEFG
累乗を計算するpow関数の使い方
pow関数は第1引数に基数、第2引数に指数を指定する。
下記のコードの場合、pow関数はvalueをn乗した値を返す。
pow(value,n)
また、pow関数を使用するときはFoundationフレームワークをimportする必要がある。
import Foundation
print( pow(2,3) )
// 8
先頭からN文字の文字列を切り出す
文字列"Swift入門"の先頭から5文字を切り出す。
let s = "Swift入門"
let start = s.startIndex
let end = s.index(start, offsetBy: 4)
let answer = s[start...end]
print(answer)
-
String.startIndex
で最初の文字の位置を取得 -
String.index(_ :offsetBy:)
メソッドで最初の文字の位置からN文字右の文字の位置を取得 -
String[fromIdx...toIdx]
で特定の範囲の文字列を切り出す
改行なしの標準出力
print関数にはterminator
という引数があり、第1引数に渡した値を出力した後にterminator
に渡した値を出力する。defaultでは"\n"
になっている。
for i in 0..<3 {
print("hoge", terminator: "")
}
//hogehogehoge
任意の文字列が含まれているか判定する
文字列"hogehuga"に文字列"huga"が含まれているか判定する。
import Foundation
var s = "hogehuga"
if s.contains("huga") {
print(s.prefix(s.count - 4)) //文字列の末尾から4文字を削除する
}
//hoge
10進数を2進数、8進数、16進数に変換
数値13を2進数、8進数、16新数に変換する。
var n = 13
let n2 = String(n, radix: 2) //2進数に変換する
let n8 = String(n, radix: 8) //8進数に変換する
let n16 = String(n, radix: 16) //16進数に変換する
print(n2) //1101
print(n8) //15
print(n16) //d
配列の要素の最大値を取得する
max関数を使う。
var array = [2,9,5,32,8,3,78,1]
print(array.max()!) //78
配列の要素の最小値を取得する
min関数を使う。
var array = [2,9,5,32,8,3,78,1]
print(array.min()!) //1