50求助!

B2110 找第一个只出现一次的字符

XXY2022 @ 2022-12-07 17:56:14

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string a;
    int b[30]={0};
    cin>>a;
    char d;
    for(int i=0;i<a.length();i++)
    {
        int c=a[i]-'a';
        b[c]++;
    }
    for(int i=0;i<a.length();i++)
    {
        if(b[i]==1)
        {
            d=i+'a';
            cout<<d;
            return 0;
        }
    }
}

by XXY2022 @ 2022-12-07 17:57:23

额少了个no


by XXY2022 @ 2022-12-07 17:58:09

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string a;
    int b[30]={0};
    cin>>a;
    char d;
    for(int i=0;i<a.length();i++)
    {
        int c=a[i]-'a';
        b[c]++;
    }
    for(int i=0;i<a.length();i++)
    {
        if(b[i]==1)
        {
            d=i+'a';
            cout<<d;
            return 0;
        }
    }
  cout<<"no";
  return 0;
}

by ImposterAnYu @ 2022-12-07 18:08:19

@XXY2022 你这找的是字典序最小的只出现一次的字母啊,不是第一个只出现一次的字符


by cn_ryh @ 2022-12-07 18:09:57

应该是这样的,第二次循环i表示的是字符串a中字符的位置下标。 所以该处字符为a[i],按照你上面的代码,在b数组中对于下标a[i]-'a'

#include <iostream>
#include <string>
using namespace std;
int main() {
  string a;
  int b[30] = {0};
  cin >> a;
  for (int i = 0; i < a.length(); i++) {
    int c = a[i] - 'a';
    b[c]++;
  }

  for (int i = 0; i < a.length(); i++) {
    if (b[a[i] - 'a'] == 1) {
      cout << a[i];
      return 0;
    }
  }
  cout << "no";
  return 0;
}

by cn_ryh @ 2022-12-07 18:11:16

@owo_ImposterAnYu_owo 不,他只是写乱了,按你说的那他第二个循环改写i<26


by kevinchw @ 2022-12-07 18:13:17

#include<iostream>
#include<string>
using namespace std;
int b[30]={0};
int main()
{
    string a;
    cin>>a;
    char d;
    for(int i=0;i<a.length();i++)
    {
        int c=a[i]-'a';
        b[c]++;
    }
    for(int i=0;i<a.length();i++)
    {
        int num=a[i]-'a';
        if(b[num]==1)
        {
            cout<<a[i];
            return 0;
        }
    }
  cout<<"no";
  return 0;
}

自己看看改了啥吧,自己要先理解怎么写再去敲代码,你这代码让我感觉连自己的思路都不完全理解就开始敲代码了。


by ImposterAnYu @ 2022-12-07 18:35:56

@ryh2007316 哦,第二个循环没细看,我的问题


|