【字符串】NOI--ch0107--02--找第一个只出现一次的字符(指针数组,有技巧)
2018-02-09 13:45
351 查看
NOI--ch0107--02--找第一个只出现一次的字符题目链接→NOI--ch0107--02 找第一个只出现一次的字符
Accept: 0 Submit: 0
Time Limit: 6000/3000 MS (Java/Others) Memory Limit : 65536/65536 K (Java/Others)
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
一个字符串,长度小于100000。
输出第一个仅出现一次的字符,若没有则输出no。
解题思路:【题意】
题意很明显,关键是如何统计字符在一个串中出现的次数。
【类型】
字符串
【分析】
字符串的输入:采用char数组,因为没有空格可用cin直接读入。 方法一可以开辟一个和char数组同样大小的数组,即一个指针数组,通过一次循环遍历字符串,将串中每个字符出现的次数记录下来。 另一种方法为动态数组,比较省内存,声明时不需指定数组大小,初始化时根据输入字符串的大小new相应空间。 记录一个字符串中各个字符出现的次数 for(int i=0;i<len;i++){
x=s[i];
p[x]++;
}
【时间复杂度&&优化】
O(n)
找第一个只出现一次的字符
Accept: 0 Submit: 0Time Limit: 6000/3000 MS (Java/Others) Memory Limit : 65536/65536 K (Java/Others)
Problem Description
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
Input
一个字符串,长度小于100000。
Output
输出第一个仅出现一次的字符,若没有则输出no。
Sample Input
abcabd
Sample Output
c
Problem Idea
解题思路:【题意】题意很明显,关键是如何统计字符在一个串中出现的次数。
【类型】
字符串
【分析】
字符串的输入:采用char数组,因为没有空格可用cin直接读入。 方法一可以开辟一个和char数组同样大小的数组,即一个指针数组,通过一次循环遍历字符串,将串中每个字符出现的次数记录下来。 另一种方法为动态数组,比较省内存,声明时不需指定数组大小,初始化时根据输入字符串的大小new相应空间。 记录一个字符串中各个字符出现的次数 for(int i=0;i<len;i++){
x=s[i];
p[x]++;
}
【时间复杂度&&优化】
O(n)
Source Code
5ms
6ms#include <iostream> #include <cstring> using namespace std; char s[100001]; int p[100001]; int x; int main() { cin>>s; int len=strlen(s); for(int i=0;i<len;i++){ x=s[i]; p[x]++; } for(int i=0;i<len;i++){ x=s[i]; if(p[x]==1){ cout<<s[i]<<endl; return 0; } } cout<<"no"<<endl; return 0; }
相关文章推荐
- 02:找第一个只出现一次的字符(1.7编程基础之字符串)
- 1.7编程基础之字符串02:找第一个只出现一次的字符
- 华为机试-找出字符串中第一个只出现一次的字符
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 【练习】在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- ACM_3:在一个字符串中找到第一个只出现一次的字符
- 微软算法100题17 字符串中找到第一个只出现一次的字符
- 找出字符串中第一个只出现一次的字符
- C++找字符串中第一个只出现一次的的字符下标(牛客剑指offer)
- 27.找出字符串中第一个只出现一次的字符
- 02:找第一个只出现一次的字符
- 华为OJ 初级:找出字符串中第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符
- 一个字符串中查找第一个只出现一次的字符。 要求复杂度为O(N).
- 【一些题】剑指offer:在字符串中找出第一个只出现一次的字符
- 利用hashtable思想,保存在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中查找第一个只出现一次的字符,要求复杂度为O(N)
- 一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符
- flag11在一个字符串中找到第一个只出现一次的字符