0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AIZU ONLINE JUDGE の問題をSwiftでやってみた(プログラミング入門 文字編)

Last updated at Posted at 2020-07-11

トピック #8 文字

AIZU ONLINE JUDGEの問題にSwiftで解答したものになります。競技プログラミングは普段やりませんので、こうしたほうが簡単!などがあればコメントで教えて下さい。
ブラウザでプログラミング・実行ができる「オンライン実行環境」paiza.IOでテスト出力が行えます

8_A 大文字と小文字の入れ替え

問題
大文字を小文字に、小文字を大文字にして下さい
解答

let a = readLine()!

func convert(_ text: String) -> String {
var returnText = ""
    for i in text {
        if i.isUppercase {
            returnText.append(i.lowercased())
        } else {
            returnText.append(i.uppercased())
        }
    }
    return returnText
}

print(convert(a))

8_B 数字の和

問題
複数のデータセットが入力として与えられます。各データセットは1つの整数 x を含む1行で与えられます。

x は 1000 桁以下の整数です。

x が 0 のとき入力の終わりとします。このデータセットに対する出力を行ってはいけません。

解答

while(true) {
    let a = readLine()!
    if Int(a) == 0{
        break
    }
    var sum = 0
    let b = Array(a).compactMap({Int(String($0))})
    for i in b {
        sum += i
    }
    print(sum)
}

8_C 文字のカウント

問題
与えられた英文に含まれる、各アルファベットの数を数えるプログラムを作成して下さい。 なお、小文字と大文字は区別しません。
解答

let lowChaArr = (97...122).map{String(Character(UnicodeScalar($0)!))}
var countArr = [Int](repeating: 0, count: 26)

var arrLowNum = 0
let a = readLine()!.lowercased()

for i in a {
    var arrUpNum = 0
    for j in lowChaArr {
        if String(i) == j {
           countArr[arrUpNum] += 1
        }
        arrUpNum += 1
    }
}
for i in 0 ..< 26{
print("\(lowChaArr[i]) : \(countArr[i])")
}

8_D リング

問題

リング状の文字列$s$の任意の位置から、時計回りに連続した文字をいくつか選んで文字列$p$が作れるかを判定するプログラムを作成しなさい。

解答

import Foundation
let ringWords = readLine()!
let searchWord = readLine()!
let ringsWordCount = ringWords.count
let ringsWordIndexStart = ringWords.index(ringWords.startIndex, offsetBy: 0)
let ringsWordIndexHalf = ringWords.index(ringWords.startIndex, offsetBy: ringsWordCount/2)
let ringsWordIndexEnd = ringWords.index(ringWords.startIndex, offsetBy: ringsWordCount)
let frontWords = ringWords[ringsWordIndexStart..<ringsWordIndexHalf]
let backWords = ringWords[ringsWordIndexHalf..<ringsWordIndexEnd]
let convertedRingWords = backWords+frontWords
if ringWords.contains(searchWord) || convertedRingWords.contains(searchWord) {
    print("Yes")
} else {
    print("No")
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?