[编程题]BFS
  • 热度指数:18956 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}Bob 在学习了 DFS 后,自己又发明了一种新的搜(luan)索(gao)方法,叫做 BFS(Bob First Search)。
\hspace{15pt}这种搜索被定义为:在一个字符串中,从前向后查找子串 "Bob" 第一次出现的位置(不区分大小写)。

输入描述:
\hspace{15pt}在一行输入一个不含空格的字符串 S,其长度为 |S|,满足 \left(1 \leqq |S| \leqq 100\right)


输出描述:
\hspace{15pt}输出一个整数,表示子串 "Bob" 第一次出现的位置(下标从 0 开始)。 
\hspace{15pt}如果子串未出现,则输出 -1
示例1

输入

Bobob

输出

0

说明

字符串 "Bobob" 中开头即出现 "Bob",起始索引为 0
示例2

输入

bobby

输出

0

说明

字符串 "bobby" 中开头即出现 "bob",起始索引为 0
示例3

输入

body

输出

-1

说明

字符串 "body" 中不包含子串 "Bob"(忽略大小写),因此输出 -1
s = input().lower()
print(s.find('bob'))
发表于 2025-07-22 20:00:24 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String S = in.nextLine();
        System.out.println(S.toLowerCase().indexOf("bob"));
    }
}

发表于 2025-10-10 13:09:04 回复(0)
#include <bits/stdc++.h>
using namespace std;

int main() {
   string s;
   cin>>s;
   for(auto &i:s){
    i=tolower(i);
   }
   char c[]="Bob";
   for(auto &i:c){
    i=tolower(i);
   }
   int pos=s.find(c);
   cout<<pos;
}
发表于 2025-09-21 16:26:41 回复(0)
#include <stdio.h>
#include <string.h>
int main() {
    char str[101];
    scanf("%s", str);
    if (strlen(str) <= 2) {
        printf("-1");
    } else if (strlen(str) > 2) {
        int num = -1;
        for (int i = 0; i <= strlen(str) - 3; i++) {
            if ((str[i] == 'B' || str[i] == 'b')
                    && (str[i + 1] == 'o' || str[i + 1] == 'O')
                    && (str[i + 2] == 'b' || str[i + 2] == 'B')) {
                num = i;
                break;
            }
        }
        printf("%d", num);
    }
    return 0;
}


注意一下&&跟||的优先级,&&先进行判断,所以要用下(),还有就是要讨论一下这个字符串的长度,小于3的直接输出-1.
没了。
🐒🐒🐒🐒🐒🐒
发表于 2025-12-14 09:29:48 回复(0)
    string s;
    cin >> s;
    for (auto& i : s) {
        i = tolower(i);
    }
   string c = "bob";
    int pos = s.find(c);
    cout << pos;

发表于 2026-01-23 16:10:38 回复(0)
#include<stdio.h>
#include<string.h>
int main()
{
    int len;
    char a[101];
    scanf("%s",a);
    len=strlen(a);
    int found=0;
    for(int i=0;i<len-2;i++)
    {
        if((a[i]=='b'||a[i]=='B')&&(a[i+1]=='o'||a[i+1]=='O')&&(a[i+2]=='b'||a[i+2]=='B'))
        {
        printf("%d",i);
        found=1;
        break;
        }}
        if(found==0)
        printf("-1");
       
   
    return 0;
}
发表于 2025-12-18 21:20:13 回复(0)
学会遍历就行
#include <stdio.h>

int main() {
	char s[101]={0};
	scanf("%s",s);
	int a=sizeof(s)/sizeof(char);
	int n=0;
	for(int i=0;i<=a-2;i++){
		if((s[i]=='B'||s[i]=='b')&&((s[i+1])=='o'||(s[i+1]=='O'))&&((s[i+2])=='b'||(s[i+2])=='B')){
			printf("%d\n",i);
			n=1;
			break;
		}
	}
	if(!n){
		printf("-1\n");
	}
	return 0;
}

发表于 2025-12-18 20:19:16 回复(0)

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;
    int a=0;
	cin>>s; 
    if (s.size()>=3){
    for (int i=0;i<=s.size()-3;i++){
        if((s[i]=='b'|| s[i]=='B')&& (s[i+1]=='o'|| s[i+1]=='O' )&&( s[i+2]=='b'|| s[i+2]=='B')){
            cout<<i;
            a=1;
            break;
        }
       
    }
    }
    if (a==0) cout<<"-1";
}

发表于 2025-10-13 11:20:00 回复(0)
lst = (input())
out = -1
for i in range(len(lst)-2):
    if lst[i] == 'b' or lst[i] == 'B':
        if lst[i+1] == 'o' or lst[i+1] == 'O':
            if lst[i+2] == 'b' or lst[i+2] == 'B':
                out = i
                break
print(out)

发表于 2026-01-23 16:35:47 回复(0)
#include <stdio.h>
#include<ctype.h>>
#include<string.h>
int main() {
    int a, b=-1,i;
    char s[100]={0},B[3]={"bob"};
    scanf("%s",s);
    a=strlen(s);
    for(i=0;i<a;i++){
        s[i]=tolower(s[i]);
    }
    for(i=0;i<a;i++){
        if(strncmp(s+i,B,3)==0){
            b=i;
            break;
        }
    }
    printf("%d",b);
    return 0;
}
发表于 2026-01-22 10:13:27 回复(1)
#include<iostream>
using namespace std;
int  main()
{
    string s;
    cin>>s;
    int flag=0;
    int len=s.length();
    for(int i=0;i<=len-3;i++)
    {
    if((s[i]=='B'||s[i]=='b')&&(s[i+1]=='o'||s[i+1]=='O')&&(s[i+2]=='b'||s[i+2]=='B'))
        {
            cout<<i<<endl;
            flag=1;
            break;
        }
    }
    if(flag==0)
    {
        cout<<"-1"<<endl;
    }
    return 0;
}
发表于 2026-01-21 20:54:30 回复(0)
#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main() {
    char c[101];
    int p = 2, q = 0;
    scanf ("%s", c);
    int length = strlen (c);
    if ( length < 3) {
        printf ("-1");
        return 0;
    }
    while (p + 1 <= length) {
        if (tolower(c[p]) != 'b') {
            p ++;
            q ++;
            continue;
        }
        if(tolower(c[q]) != 'b') {
            p ++;
            q ++;
            continue;
        }
        q ++;
        if (tolower(c[q]) != 'o') {
            p += 2;
            q ++;
            continue;
        }
        printf ("%d", q - 1);
        return 0;
    }
    printf ("-1");
    return 0;
}

发表于 2026-01-21 14:33:09 回复(0)
用if条件句
#include <iostream>
using namespace std;
#include<string>
int main() {
    ios::sync_with_stdio(false),cin.tie(nullptr);
    string check ;cin >> check;
    int i = 2,flag = -1;
    for(;i < check.size();i++){
        if((check[i] == 'b' || check[i] == 'B') && (check[i - 1] == 'o' || check[i - 1] == 'O') && (check[i - 2] == 'b' || check[i - 2] == 'B'))
        {
            flag = i - 2;
            break;
        }
    }
    if(flag == -1) cout << "-1";
    else cout << flag;
    return 0;
}
发表于 2026-01-19 15:15:11 回复(0)
#include <stdio.h>
#include<string.h>
int main(){
    char str[101];
    fgets(str,sizeof(str),stdin);
    str[strcspn(str,"\n")]='\0';
    int k=-1;
    for(int i=0;str[i]!='\0';i++)
    {
        if((str[i]=='B'||str[i]=='b')&&(str[i+1]=='O'||str[i+1]=='o')&&(str[i+2]=='B'||str[i+2]=='b')){
               k=i;
               break;
        }
    }
    printf("%d",k);
}
发表于 2026-01-19 09:45:42 回复(0)
#include <stdio.h>

int main() {
    char S[101];
    fgets(S, 101, stdin);
    for (int i = 0; S[i] != '\0'; i += 1) {
        if ((S[i] == 'b' || S[i] == 'B') && (S[i + 1] == 'o' || S[i + 1] == 'O') && (S[i + 2] == 'b' || S[i + 2] == 'B')) {
            printf("%d", i);
            return 0;
        }
    }
    printf("-1");
    return 0;
}

发表于 2026-01-10 23:43:58 回复(0)
n = input()
c= n.lower()
b = c.find('bob')
print(b)
发表于 2025-12-28 15:25:07 回复(0)
#include <cctype>
#include <iostream>
using namespace std;
#include <string>

void ToUpper(string& s){
    for(auto& c : s){
        c = toupper(c);
    }
}

int main() {
    string s,s1;
    s = "bob";
    cin >> s1;
    ToUpper(s1);
    ToUpper(s);
    int pos = s1.find(s);
    if(pos >= 0) cout << pos << endl;
    else cout << "-1" << endl;

}

发表于 2025-12-20 02:24:31 回复(0)
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
    char s[101];
    char t[4], f = 0;
    scanf("%s", s);
    int len = strlen(s);
    for (int i = 0; i <= len - 3; i++) {
        if (tolower(s[i]) == 'b' && tolower(s[i + 1]) == 'o' &&
                tolower(s[i + 2]) == 'b') {
            printf("%d", i);
            f = 1;
            break;
        }
    }
    if (!f)printf("-1");
    return 0;
}
发表于 2025-12-17 15:11:03 回复(0)
n = input().strip()
result = -1
for i in range(len(n) - 2):
    k = n[i:i+3]
    c = k.lower()
    if c == "bob":
        result = i 
        break 
print(result)

发表于 2025-11-22 22:43:06 回复(0)
#include <iostream>
#include <string>
#include <vector>
#include <climits>

using namespace std;
using vs = vector<string>;

int main()
{
    string str; cin >> str;
    vs targets = {"Bob", "BOb", "BoB", "BOB", "bOB", "boB", "bOb","bob"};
    size_t min_pos = string::npos;

    for(const string& tg : targets)
    {
        size_t pos = str.find(tg);
        if(pos != string::npos)
            if(pos < min_pos) min_pos = pos;
    }
    if(min_pos == string::npos) cout << "-1" << endl;
    else cout << min_pos << endl;
    return 0;
}
发表于 2025-11-20 10:42:23 回复(0)