九敏😭😭我写不出来,呜~

img


我更侧重使用Java😊但是C++C语言也行呦额希望能提点一下🤓能够多点注释就好啦~

通过String类的indexOf()方法不断循环查找从输入获得的字符串即可。代码如下:
参考链接:
几句话直观理解java中Scanner类的next()、nextLine()、nextInt()_寒冢人家的博客-CSDN博客_java scanner.next
Java中字符串中子串的查找共有四种方法(indexof())_PrinciplesMan的博客-CSDN博客_java字符串查找子串
Java最全截取字符串方法_一轻舞浅唱的博客-CSDN博客_java截取字符串中的一部分

import java.util.Scanner;

public class Findupup {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        //https://blog.csdn.net/weixin_52459924/article/details/123538356
        //从输入获取一个字符串
        String  str = sc.next(); 
        
        int num=0;  //连续的"upup"个数
        
            //https://blog.csdn.net/u010227042/article/details/118221413
        int position = str.indexOf("upup");    //从字符串查找第一次出现"upup"的位置    
        

        
        //如果找到了,则继续查找下一个"upup"
        while(position!=-1) {
            num++; //连续的"upup"计数+1
            //https://blog.csdn.net/whitek387/article/details/122948670
            //System.out.println("position="+position+",num="+num+",str(position+2)="+str.substring(position+2));
            
            //查找下一个位置是否有连续的"upup",从当前查找到的"upup"第三个字符'u'位置往后查找,直到再没有找到连续的"upup"
            position = str.indexOf("upup", position+2);
            //System.out.println("position="+position+",num="+num);
            
        }
            
        
        System.out.println("共有"+num+"个'upup'");
    }

}

img


#include<bits/stdc++.h> 
using namespace std;
int main()
{
    string a;
    int b=0,c=0;
    cin>>a;
    c=a.length();
    for(int i=0;i<=c-1;i++)
    {
        if(a[i]=='u' and a[i+1]=='p' and a[i+2]=='u' and a[i+3]=='p') b++;
    }
    cout<<b;
 }

    string str1 = "upupu3p9up";
    string str2 = "up";
    int n = 0, i = 0;
    while ((n = str1.find(str2, n)) != string::npos) {
        n = n + str2.length();
        ++i;
    }

参考代码。


#include <iostream>
#include <iterator>
using namespace std;

int CountStrIncludeUpup(string str_);

int main() {
    string str;
    cin >> str;
    cout << CountStrIncludeUpup(str) << '\n';
    return 0;
}

int CountStrIncludeUpup(string str_) {
    int num = 0;
    //迭代器类似指针,lit指向第一个元素,rit指向最后一个元素的后一个位置
    auto lit = str_.begin();
    auto rit = str_.end();
    //用于判断
    string temp;
    while (true) {
        if (*lit == 'u') {
            if (lit + 3 < rit) {  //防止越界
                //初始化temp用于判断
                temp = {lit, lit + 4};
                if (temp == "upup") {
                    num++;
                }
            } else {
                return num;
            }
        }
        lit++;
    }
    return num;
}