[Java]伯俊1543号[ドキュメント検索]Java
白俊1543号です.
https://www.acmicpc.net/problem/1543
質問する
indexOf(
コード#コード#
https://www.acmicpc.net/problem/1543
質問する
勢俊は英語だけで構成されたドキュメントを検索するために関数を作成したいと思っています.この関数は、どの単語が全部で何回現れるかを数えます.しかし,ポテンシャル俊の関数は重複しており,数以外にも数えられる.たとえば、ドキュメントがababbaで、検索する単語がababaである場合、ポテンシャル俊のこの関数は0番から単語を検索するか、2番から検索することができます.しかし、同時に数えることはできません.
セジュンは、指定されたドキュメントと検索する単語を見て、その単語が最大数回現れ、繰り返されないプログラムを書いた.
入力
最初の行にドキュメントが表示されます.ファイルの長さは最大2500です.2行目は検索したい単語を与えます.この長さはせいぜい50です.ドキュメントと単語は、アルファベット小文字とスペースで構成されています.
しゅつりょく
出力の最初のローは、重複を避けるために最大数回発生します.
入力例 ababababa
aba
サンプル出力 2
考える
文字列内で必要な文字列を検索する方法.
ただし、重複しないため、見つかった文字は文字列から削除して進むことができます.
ここでString演算を行う場合
つまり、append、deleteは通常のStringよりStringBuilderに適しており、入力から
StringBuilderを使用して入力を受信します.
Stringは可変(不変)の性質を持つため,文字列演算に効率的ではない.
StringBuilderのappend、deleteを使用すると、より効率的にタスクを完了できます.
アクション
最初の行にドキュメントが表示されます.ファイルの長さは最大2500です.2行目は検索したい単語を与えます.この長さはせいぜい50です.ドキュメントと単語は、アルファベット小文字とスペースで構成されています.
しゅつりょく
出力の最初のローは、重複を避けるために最大数回発生します.
入力例 ababababa
aba
サンプル出力 2
考える
文字列内で必要な文字列を検索する方法.
ただし、重複しないため、見つかった文字は文字列から削除して進むことができます.
ここでString演算を行う場合
つまり、append、deleteは通常のStringよりStringBuilderに適しており、入力から
StringBuilderを使用して入力を受信します.
Stringは可変(不変)の性質を持つため,文字列演算に効率的ではない.
StringBuilderのappend、deleteを使用すると、より効率的にタスクを完了できます.
アクション
ababababa
aba
サンプル出力 2
考える
文字列内で必要な文字列を検索する方法.
ただし、重複しないため、見つかった文字は文字列から削除して進むことができます.
ここでString演算を行う場合
つまり、append、deleteは通常のStringよりStringBuilderに適しており、入力から
StringBuilderを使用して入力を受信します.
Stringは可変(不変)の性質を持つため,文字列演算に効率的ではない.
StringBuilderのappend、deleteを使用すると、より効率的にタスクを完了できます.
アクション
2
文字列内で必要な文字列を検索する方法.
ただし、重複しないため、見つかった文字は文字列から削除して進むことができます.
ここでString演算を行う場合
つまり、append、deleteは通常のStringよりStringBuilderに適しており、入力から
StringBuilderを使用して入力を受信します.
Stringは可変(不変)の性質を持つため,文字列演算に効率的ではない.
StringBuilderのappend、deleteを使用すると、より効率的にタスクを完了できます.
アクション
int count = 0;
int startIndex = 0;
int find_len = find.length();
// find와 똑같은 문자열을 StringBuilder에서 찾아서 해당 index값을 가져옴
// 이후에 StringBuilder에서 delete작업을 하면됨.
// 그리고 count값 증가를 하면 답을 구할 수 있음
while((startIndex = sb.toString().indexOf(find)) != -1) {
sb.delete(0, startIndex + find_len);
count++;
}
System.out.println(count);
文字列全体からsearch()メソッドでsb
find
が含まれているかどうかを確認します.indexOf(
find
)を使用してsb
と同じ文字を検索すると、index値が返され、開始インデックスstartIndex
からfind
の文字列長を使用してdelete操作が行われます.コード#コード# import java.io.*;
public class Main {
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
sb.append(br.readLine());
String find = br.readLine();
search(find);
} // End of main
static void search(String find) {
int count = 0;
int startIndex = 0;
int find_len = find.length();
while((startIndex = sb.toString().indexOf(find)) != -1) {
sb.delete(0, startIndex + find_len);
count++;
}
System.out.println(count);
}
} // End of class
Reference
この問題について([Java]伯俊1543号[ドキュメント検索]Java), 我々は、より多くの情報をここで見つけました
https://velog.io/@lifeisbeautiful/Java-백준-1543번-문서작업-자바
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import java.io.*;
public class Main {
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
sb.append(br.readLine());
String find = br.readLine();
search(find);
} // End of main
static void search(String find) {
int count = 0;
int startIndex = 0;
int find_len = find.length();
while((startIndex = sb.toString().indexOf(find)) != -1) {
sb.delete(0, startIndex + find_len);
count++;
}
System.out.println(count);
}
} // End of class
Reference
この問題について([Java]伯俊1543号[ドキュメント検索]Java), 我々は、より多くの情報をここで見つけました https://velog.io/@lifeisbeautiful/Java-백준-1543번-문서작업-자바テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol