
我自己输入几个样例是可以通过的,但是蓝桥杯不给过。哪里有错么
关注引自免费微信小程序:皆我百晓生
在您的代码中,存在一些逻辑错误和格式错误,这可能是导致测试失败的原因。下面是修改后的代码,我已经修复了这些问题:
#include<iostream>
#include<string>
// 函数原型声明
bool isUnique(const std::string &str);
int main() {
std::string a;
std::getline(std::cin, a);
// 使用函数判断字符串是否唯一
if (isUnique(a)) {
std::cout << "YES" << std::endl;
} else {
std::cout << "NO" << std::endl;
}
return 0;
}
// 函数定义:检查字符串中的字符是否唯一
bool isUnique(const std::string &str) {
for (size_t i = 0; i < str.size(); ++i) {
char lowerCaseChar = tolower(str[i]);
for (size_t j = i + 1; j < str.size(); ++j) {
if (lowerCaseChar == tolower(str[j])) {
return false;
}
}
}
return true;
}
主要更改包括:
char a[100]; 更改为 std::string a;,因为使用 std::string 可以更方便地处理字符串。'\o' 改为 '\0',并将 l='\0' 改为 j < str.size()。if (!isalpha(a[i])) 部分,因为我们只关心字母字符。isUnique 来封装判断唯一性的逻辑,使代码更加模块化。现在这个版本应该可以正确地检测字符串中的字符是否唯一,并且更容易阅读和维护。您可以尝试提交这个修订版代码到蓝桥杯平台进行测试。