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の抜けを訂正しました。