No.597 concat
はじめに
競技プログラミング、yukicoder
No.597 concat
言語はC#
何かあればTwitter→@pirorirori_n712まで
問題
N 個の文字列が与えられるので、これを順に連結した文字列を出力する。
入力:
N S1 S2 ⋮ SN 1≤N≤10 1≤|Si|≤20
Si は'a'-'z'のみで構成される
一行目に文字列の数N
二行目以降は連結する文字列
出力:
S1S2… と連結した文字列
解き方
文字列の与えられ方が、一行ずつなので
ループの中で文字列を読み込みながら連結させる。
与えられた文字列を繋げて出力するには、
大きく分けて以下の二つがある。
①文字列を繋いだものを出力する
②文字列を一つずつ横に出力した結果が、文字列を繋いだ文字列になる
更にこの二つでも方法にはいくつか種類がある
①について
1.+演算子で繋ぐ
string型の変数を一つ用意して、そこに文字列を足していく
2.StringBuilderクラスのStringBuilder.Appendで繋ぐ
末尾に文字列を足していく
3.StringクラスのString.Concatで繋ぐ
+演算子と同じ動作
4.StringクラスのString.Formatで繋ぐ
2つの文字列を連結する
②について
1.入力を一行ずつConsole.Write()で出力して、
最終的な出力が「文字列を繋いでいる」かたちになるようにする
コード例
①-1 +演算子で繋ぐ
23ms,258Byte
using System; class No597{ static void Main(string[] args){ //入力をintにキャストして変数に入れる //これは文字列の数なので後でループで使う var num=Int32.Parse(Console.ReadLine()); //文字列の変数、ここに文字列を足していく var str=""; //N回分ループを回す for(int i=0;i<num;i++){ //読み込んだ文字列を文字列を保存している変数に足していく str+=Console.ReadLine(); } //最後に文字列を出力する Console.WriteLine(str); } }
①-2 StringBuilderクラスのStringBuilder.Appendで繋ぐ
29ms,310Byte
using System; using System.Text;//StringBuilderクラスを使うために必要 class No597{ static void Main(string[] args){ //入力をintにキャストして変数に入れる //これは文字列の数なので後でループで使う var num=Int32.Parse(Console.ReadLine()); //StringBuilderクラスの変数を用意する //後のループで文字列をここに追加していく StringBuilder sb = new StringBuilder(); //N回分ループを回す for(int i=0;i<num;i++){ //先ほど用意した変数に文字列を足していく //StringBuilder.Append()は末尾に要素を追加していく sb.Append(Console.ReadLine()); } //最後に出力する Console.WriteLine(sb); } }
①-3 StringクラスのString.Concatで繋ぐ
25ms,276Byte
using System; class No597{ static void Main(string[] args){ //入力をintにキャストして変数に入れる //これは文字列の数なので後でループで使う var num=Int32.Parse(Console.ReadLine()); //文字列の変数、ここに文字列を足していく var str=""; //N回分ループを回す for(int i=0;i<num;i++){ //読み込んだ文字列を文字列を保存している変数に足していく str=string.Concat(str,Console.ReadLine()); } //最後に文字列を出力する Console.WriteLine(str); } }
①-4 StringクラスのString.Formatで繋ぐ
33ms,285Byte
using System; class No597{ static void Main(string[] args){ //入力をintにキャストして変数に入れる //これは文字列の数なので後でループで使う var num=Int32.Parse(Console.ReadLine()); //文字列の変数、ここに文字列を足していく var str=""; //N回分ループを回す for(int i=0;i<num;i++){ //読み込んだ文字列を文字列を保存している変数に足していく str=string.Format("{0}{1}",str,Console.ReadLine()); } //最後に文字列を出力する Console.WriteLine(str); } }
②-1 入力を一行ずつConsole.Write()で出力して、
最終的な出力が「文字列を繋いでいる」かたちになるようにする
26ms,210Byte
using System; class No597{ static void Main(string[] args){ //入力をintにキャストして変数に入れる //これは文字列の数なので後でループで使う var num=Int32.Parse(Console.ReadLine()); //N回分ループを回す for(int i=0;i<num;i++){ //読み込んだ文字列を出力する //このとき、改行はしたくないのでConsole.Write()を使う Console.Write(Console.ReadLine()); } } }
10月9日 一部のByte数とusing Systemの抜けを訂正しました。