题目描述 如题,给定 � N 个字符串(第 � i 个字符串长度为 � � M i ,字符串内包含数字、大小写字母,大小写敏感),请求出 � N 个字符串中共有多少个不同的字符串。 输入格式 第一行包含一个整数 � N ,为字符串的个数 接下来 � N 行每行包含一个字符串,为所提供的字符串 输出格式 输出包含一行,包含一个整数,为不同的字符串个数 样例输入 5 abc aaaa abc abcc 12345 样例输出 4 数据范围 � ≤ 10000 N≤10000, � � ≈ 1000 M i ≈1000, � � � � ≤ 1500 M max ≤1500。请用C++语言写出实现程序。
时间: 2024-01-16 18:05:29 浏览: 42
可以使用C++中的unordered_set实现字符串去重:
```cpp
#include <iostream>
#include <unordered_set>
#include <string>
using namespace std;
int main()
{
int n;
cin >> n;
unordered_set<string> s;
for (int i = 0; i < n; i++) {
string str;
cin >> str;
s.insert(str);
}
cout << s.size() << endl;
return 0;
}
```
其中unordered_set是一个哈希表,可以快速地判断一个字符串是否已经出现过。时间复杂度为O(N),空间复杂度为O(N)。
相关问题
给定一个字符串 � s ,请你找出其中不含有重复字符的最长子串的长度。
好的,这是一个比较经典的字符串问题。我可以给你提供一种解法,使用滑动窗口来解决。
具体来说,我们可以使用两个指针,分别表示当前子串的左右边界。我们先将左指针和右指针都初始化为 0,然后不断地增加右指针,同时更新最长子串的长度,直到出现重复字符为止。此时,我们就需要移动左指针,直到重复字符被移出子串为止,然后继续增加右指针,重复上述过程,直到右指针到达字符串的末尾为止。
下面是具体的代码实现:
```python
def lengthOfLongestSubstring(s: str) -> int:
n = len(s)
if n == 0:
return 0
left, right = 0, 0
max_len = 1
char_set = set()
while right < n:
if s[right] not in char_set:
char_set.add(s[right])
right += 1
max_len = max(max_len, right - left)
else:
char_set.remove(s[left])
left += 1
return max_len
```
题目描述:对于给定的一个字符串,统计其中数字字符出现的次数。
对于给定的字符串,可以使用 Python 中的内置函数 isdigit() 来判断每个字符是否为数字字符,如果是,则累加计数器。代码示例如下:
```
count = 0
for char in input_string:
if char.isdigit():
count += 1
print(count)
```