通过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'");
}
}
#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;
}