沒什麼特別技巧,最 naive 的作法就是三層迴圈

1. 起始位置

2. U 的長度

3. 開始比較 U

 

 

 

#include <iostream>

using namespace std;

int main()
{
  int k;
  string input;

  int ans;
  while(cin >> k >> input){

    int len = input.length();
    bool U_exist;

    ans = 0;
    //start length offset
    for(int s = 0; s+k < len; s++){
      for(int l = 1; s-l >= 0 && s+k+l <= len; l++){
        U_exist = true;
        for(int o = 0; o<l; o++){
          if(input[s-l+o] != input[s+k+o]){
            U_exist = false;
            break;
          }
        }

        if(U_exist)        
          ans++;
      }
    }

    cout << ans << endl;
  }

  return 0;
}

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大神(偽) 的頭像
    大神(偽)

    大神的世界

    大神(偽) 發表在 痞客邦 留言(0) 人氣()