鱼C论坛

 找回密码
 立即注册
查看: 1265|回复: 3

[已解决]匹配字符串(这次是不同方法)

[复制链接]
发表于 2022-4-28 23:07:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <bits/stdc++.h>
using namespace std;

void low(string &s){
        for(char i : s){
                i = tolower(i);
        }
}

string tar, temp = "***"; //tar是目标, temp临时变量
int tarsize, c = 0, l = 0; //第一个是目标的长度, c代表找到几次, l是实时更新的位置
vector<int> locate; //记录位置
bool isfind = false;
int main(){
        ios::sync_with_stdio(false);
        cin >> tar;
        low(tar);
        tarsize = tar.size();
        while(temp != "\0"){
                cin >> temp;
                low(temp);
                if(tar == temp){
                        isfind = true;
                        c++;
                        locate.push_back(l);
                }
                l += temp.size() + 1; //加一有空格
        }
        if(isfind){
                cout << locate[0] << ' ' << c;
        }
        else{
                cout << "-1";
        }
        return 0;
}
代码如上
题目:https://www.luogu.com.cn/problem/P1308
这次我的想法是反正每个单词之间都有空格, 可以用cin一个一个读, 然后再做出返回
但是现在运行起来它不返回 , 不知道为啥...
求助
最佳答案
2022-4-29 17:10:04
#include <bits/stdc++.h>

using namespace std;

void low(string &s) {
    for(char &i : s) {
        i = tolower(i);
    }
}

string tar, temp = "***";   // tar是目标, temp临时变量
int tarsize, c = 0, l = 0;  //第一个是目标的长度, c代表找到几次, l是实时更新的位置
vector<int> locate; //记录位置
bool isfind = false;

int main() {
    ios::sync_with_stdio(false);
    cin >> tar;
    low(tar);
    tarsize = tar.size();
    while(temp != "\0") {
        cin >> temp;
        if(!cin.good()) temp = "\0";
        low(temp);
        if(tar == temp) {
            isfind = true;
            c++;
            locate.push_back(l);
        }
        l += temp.size() + 1; //加一有空格
    }
    if(isfind) {
        cout << locate[0] << ' ' << c;
    } else {
        cout << "-1";
    }
    cout << endl;
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-28 23:21:11 | 显示全部楼层
void low(string &s){
        for(char i : s){
                i = tolower(i);
        }
}


for(char &i : s)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-29 15:02:42 | 显示全部楼层


还是没有输出qwq
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-29 17:10:04 | 显示全部楼层    本楼为最佳答案   
#include <bits/stdc++.h>

using namespace std;

void low(string &s) {
    for(char &i : s) {
        i = tolower(i);
    }
}

string tar, temp = "***";   // tar是目标, temp临时变量
int tarsize, c = 0, l = 0;  //第一个是目标的长度, c代表找到几次, l是实时更新的位置
vector<int> locate; //记录位置
bool isfind = false;

int main() {
    ios::sync_with_stdio(false);
    cin >> tar;
    low(tar);
    tarsize = tar.size();
    while(temp != "\0") {
        cin >> temp;
        if(!cin.good()) temp = "\0";
        low(temp);
        if(tar == temp) {
            isfind = true;
            c++;
            locate.push_back(l);
        }
        l += temp.size() + 1; //加一有空格
    }
    if(isfind) {
        cout << locate[0] << ' ' << c;
    } else {
        cout << "-1";
    }
    cout << endl;
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 20:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表