2 solutions

  • 0
    @ 2024-3-25 12:13:57

    #include #include

    using namespace std;

    string s,a; int maxn = 0; int pos=1e9,num=0;

    string tolow(string s){ for (int i=0;i<s.length();i++) if (s[i]>='A' && s[i]<='Z') s[i] = s[i] -'A' + 'a'; return s; }

    int main(){ getline(cin,a); getline(cin,s); a = tolow(a); s = tolow(s); s = s + ' '; //避免最后一个单词找不到 (没有结尾空格时) //找到 s中是否存在a单词 输出存在的个数和第一个起始位置

    string t = "";	//t来描述当前的单词 
    for (int i=0;i<s.length();i++){
    	if (s[i]>='a' && s[i]<='z')
    		t = t + s[i];	//当前单词长度增加
    	else {
    		//遇到空格 说明当前单词已经算完了
    		if (t == a)	{
    			num++;	//多找到了一个匹配结果
    			pos = min(pos, i - (int)t.length() ); 
    		}	
    		t = "";
    	} 
    } 
    
    if (num==0)	cout << -1 << endl;
    else cout << num << " " << pos << endl;
    

    Copy

    }

    • -1
      @ 2024-3-25 12:10:58

      #include #include

      using namespace std;

      string s,a; int maxn = 0; int pos=1e9,num=0;

      string tolow(string s){ for (int i=0;i<s.length();i++) if (s[i]>='A' && s[i]<='Z') s[i] = s[i] -'A' + 'a'; return s; }

      int main(){ getline(cin,a); getline(cin,s); a = tolow(a); s = tolow(s); s = s + ' '; //避免最后一个单词找不到 (没有结尾空格时) //找到 s中是否存在a单词 输出存在的个数和第一个起始位置

      string t = "";	//t来描述当前的单词 
      for (int i=0;i<s.length();i++){
      	if (s[i]>='a' && s[i]<='z')
      		t = t + s[i];	//当前单词长度增加
      	else {
      		//遇到空格 说明当前单词已经算完了
      		if (t == a)	{
      			num++;	//多找到了一个匹配结果
      			pos = min(pos, i - (int)t.length() ); 
      		}	
      		t = "";
      	} 
      } 
      
      if (num==0)	cout << -1 << endl;
      else cout << num << " " << pos << endl;
      

      }

      • 1

      Information

      ID
      306
      Time
      1000ms
      Memory
      125MiB
      Difficulty
      2
      Tags
      # Submissions
      45
      Accepted
      35
      Uploaded By