首页 > 试题广场 >

手写代码:给一个字符串找出第一个只出现一次的字符位置

[问答题]

手写代码:给一个字符串找出第一个只出现一次的字符位置

class Solution:
    def FirstNotRepeatingChar(self, s):

        list_str=list(s)

        for x in range(len(s)):

            if list_str[x] not in list_str[:x] and list_str[x] not in list_str[x+1:]:
                return x

        return -1

发表于 2022-05-13 18:07:00 回复(0)
#include <bits/stdc++.h>
using namespace std;

int main()
{
    string str="abcdabc";
    //在字符串中查找出第一个只出现一次的字符

    //o(n) 空间换时间
    int a[300];
    memset(a,0,sizeof(a));

    //第一次遍历 统计各字符出现次数
    for(int i=0;i<str.length();i++)
    {
        a[str[i]]++;
    }

    //第二次遍历 辅助数组做哈希映射
    int pos=-1;
    for(int i=0;i<str.length();i++)
    {
        if(a[str[i]]==1)
        {
            pos=i;
            break;
        }
    }
    cout<<pos<<endl;
    return 0;
}

发表于 2019-10-14 16:38:05 回复(0)