2021 NAVER漫画開発チャレンジ1回コードテスト3回


説明:
[問題は非公開]
に答える
import java.util.*;


public class Solution {
    public int solution(String s, String t) {
        int count = 0;

        StringBuilder builder = new StringBuilder();

        int index = 0;
        int block_length = t.length();
        while(index < s.length()) {
            builder.append(s.charAt(index++));
            // continue if current string's length not enough to check target.
            if(builder.length() < block_length) {
                continue;
            }

            // if built string is long enough to check block.
            // check changing block found.
            int startIndex = builder.length() - block_length;
            int endIndex = builder.length();// - 1; substring is exclusive

            // if target string is found, remove from builder and count.
            if(builder.substring(startIndex, endIndex).equals(t)) {
                count++;
                builder.delete(startIndex, endIndex);
            }      

        }

        return count;
    }
}
同様に文字列処理の問題であり,論理的な難問よりも性能処理を重視する.メソッドのみを呼び出す場合、要求は数行で実現できますが、時間の複雑さが必要なため、制約を満たす場合に文字列をどのように処理するかを考慮しています.
テストを行うために、私は自分で数十万文字列を作って返しましたが、タイムアウトはありませんでした.嬉しいけど時間がかかりすぎて2問目がうまくできなかったので残念