[BOJ]2941クロアチア文字
19517 ワード
質問する
以前はオペレーティングシステムでクロアチア文字を入力できませんでした.したがって、クロアチア文字の入力は次のように変更します.
クロアチア文字の変化ćc-dždz=đd-ljljnjnjšs=žz=
例えばljes=njakには6つのクロアチア文字(lj,e,š, nj,a,kからなる.単語が与えられると、出力はいくつかのクロアチア文字で構成されます.
džアルファベット、dとž分離とは思えない.ljもnjも同じです.上のカタログにないアルファベットは、一字一字数えています.
入力
最初の行には最大100文字の単語があります.小文字「-」、「=」で構成されています.
単語はクロアチア文字で構成されています.質問説明表のアルファベットを変更形式で入力します.
しゅつりょく
入出力所与の単語はいくつかのクロアチア文字からなる.
入力例1
ljes=njak
サンプル出力1
6
入力例2
ddz=z=
サンプル出力2
3
入力例3
nljj
サンプル出力3
3
入力例4
c=c=
サンプル出力4
2
入力例5
dz=ak
サンプル出力5
3
に答える
イニシャルコード
入力した文字数が1の場合、直接1を出力して終了します.
一字一字別々に読む.
最後の文字であれば、
個数と始点1を増やします.
最後から2番目の文字であれば、
現在位置~現在位置+1を切り取り、その文字が2桁のクロアチア文字であるかを確認します.
正しい場合は、始点を2に増やし、個数を1に増やします.
異なる場合は、始点1を増やし、個数1を増やします.
その他の場合、
2文字、3文字を切り取って保存し、クロアチア文字であるかどうかを確認します.
2つのクロアチア文字と同じであれば、始点を2に増やし、個数を1に増やします.
三重クロアチア文字と同じように始点3を増やし、個数1を増やすことができます.
そうでなければ、始点1を増やし、個数1を増やします.
個数を出力します.
単純コード
入力した文字列でクロアチア文字を検索し、スペースにします.(クロアチア文字数を1に減らす操作)
変更が完了すると、変更された文字列の数が返されます.
コード#コード#
イニシャルコーディング
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int count = 0, start = 0;
// base case
if (s.length() == 1) {
System.out.println(1);
return;
}
while (start < s.length()) {
if (start == s.length() - 1) {
count++;
start++;
} else if (start == s.length() - 2) {
String curSubStr2 = s.substring(start, start + 2);
if (curSubStr2.equals("c=") || curSubStr2.equals("c-") || curSubStr2.equals("d-") || curSubStr2.equals("lj") || curSubStr2.equals("nj") || curSubStr2.equals("s=") || curSubStr2.equals("z=")) {
start += 2;
} else {
start++;
}
count++;
} else {
String curSubStr2 = s.substring(start, start + 2);
String curSubStr3 = s.substring(start, start + 3);
if (curSubStr2.equals("c=") || curSubStr2.equals("c-") || curSubStr2.equals("d-") || curSubStr2.equals("lj") || curSubStr2.equals("nj") || curSubStr2.equals("s=") || curSubStr2.equals("z=")) {
start += 2;
} else if (curSubStr3.equals("dz=")) {
start += 3;
} else {
start++;
}
count++;
}
}
System.out.println(count);
}
}
より単純なコード
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
// base case
if (s.length() == 1) {
System.out.println(1);
return;
}
String[] croatia = {"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};
for (String i : croatia) {
s = s.replace(i, " ");
}
System.out.println(s.length());
}
}
Reference
この問題について([BOJ]2941クロアチア文字), 我々は、より多くの情報をここで見つけました https://velog.io/@ffwang/BOJ-2941テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol