弟弟的混亂代碼(易理解 大概
思路: 回圈b(被找的字串),遇空格比較兩空格間的長度是否與a(需要查找的字符)相等;不相等繼續回圈;相等比較內容是否相同(倒數比較,不一樣直接退出 ,直到比較到第一個都相等時 num++),
#include <iostream> #include <bits/stdc++.h> #include <cstring> using namespace std; ? int main() { string a;//找 string b;//被找 getline(cin,a); getline(cin,b); int lena = a.length(); int lenb = b.length(); int k = -1;//上一個空格位置 int perlenb = 0;//每一個長度 int num = 0; int first = -1; ? ? for(int i=0;i<lena;i++) if(a[i]>='A' && a[i]<='Z') a[i]+=32; for(int j=0;j<lenb;j++) if(b[j]>='A' && b[j]<='Z') b[j]+=32; ? //大小寫轉換完成 ? ? for(int i=0;i<lenb;i++) { if(i==0 && b[i]==' ') {i++;k++;} if(b[i]==' ') { perlenb = i-k-1; ? if(lena==perlenb) { for(int j=lena-1;j>=0;j--) { if(a[j]!=b[i+j-lena]) break; else if(j==0) { num++;if(first<0){first=i-lena;} } ? } } k=i; } if(i==lenb-1) { if(lena==perlenb) { for(int j=lena-1;j>=0;j--) { if(a[j]!=b[i+j-lena]) break; num++;if(first<0){first=i-lena;} } } k=i; } } if(first==-1) cout<<first<<endl; else cout<<num<<" "<<first<<endl; return 0; } ?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/95049.html
標籤:C++
