質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

解決済

1回答

3157閲覧

go言語で、スペースで区切られた英単語列の出現回数の表示

k.takeshi

総合スコア28

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

1クリップ

投稿2018/01/08 09:07

入力として、スペースで区切られた英単語の列の出現回数を表示したい場合、どの様にすれば良いのでしょうか?

入力例)
tokyo kyoto fukuoka tokyo fukuoka sapporo tokyo

出力例)
tokyo 3
kyoto 1
fukuoka 2
sapporo 1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

例えば、以下のようにやります。

Go

1package main 2 3import ( 4 "fmt" 5 "strings" 6) 7 8func main() { 9 // 処理対象(英単語が半角スペース区切りで並んだ文字列) 10 str := "tokyo kyoto fukuoka tokyo fukuoka sapporo tokyo" 11 12 // 半角スペースを区切り文字として、strから文字列のスライスを作成 13 strSlice := strings.Split(str, " ") 14 15 // 文字列の出現数をカウントするマップを作成 16 counts := make(map[string]int) 17 18 // 文字列のスライスから要素の文字列を順に取り出し、カウンタをインクリメント 19 for _, s := range strSlice { 20 counts[s] ++ 21 } 22 23 // 結果の出力 24 for s, n := range counts { 25 fmt.Printf("%s: %d\n", s, n) 26 } 27}

上記を実行すると以下の出力が得られます。(順番は不定です)

tokyo: 3

kyoto: 1
fukuoka: 2
sapporo: 1

以上参考になれば幸いです。

投稿2018/01/08 09:29

編集2018/01/08 09:38
jun68ykt

総合スコア9058

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k.takeshi

2018/01/08 09:42

ありがとうございます! mapを使うのですね。 助かりました!
jun68ykt

2018/01/08 09:44

解決したようで、よかったです!
mattn

2018/01/09 08:08

空白が2つ並ぶと空文字がカウントされるので strings.Fields を使うと良いです。 strSlice := strings.Fields(str) strings.Fields はタブや改行なども扱うので用途によっては便利です。もしスペースでないと困るのであれば strSlice := strings.FieldsFunc(str, func(r rune) bool { return r == ' ' }) こうする事も出来ます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問