给定一个长度为n的字符串,字符串只包含大小写字母,请求返回该字符串拥有那些字符,并将它们按照出现先后顺序拼接成新的字符串 用C++语言实现
时间: 2024-05-31 07:07:50 浏览: 108
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int count[26] = {0}; // 用于统计每个字符出现的次数
scanf("%s", str);
int len = strlen(str);
for (int i = 0; i < len; i++) {
count[str[i] - 'a']++; // 统计每个字符出现的次数
}
for (int i = 0; i < 26; i++) {
if (count[i] > 0) {
printf("%c", i + 'a'); // 输出出现过的字符
}
}
return 0;
}
相关问题
题目描述 如题,给定 � 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++语言写出实现程序。
可以使用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)。
c语言编程字符串给定一个字符串,字符串由数字和大小写字母构成,请你找到并输出其中的第一个整数。如果无法找到整数,或者找到的整数超过1e9,则输出-1。 输入 一行一个字符串。 字符串长度不超过100 输出 一个整数表示结果。
在C语言中,你可以使用一个循环遍历字符串,同时检查每个字符,看是否能组成有效的整数。下面是一个解决方案,它利用了`strtol`函数来尝试解析数字,如果解析失败则返回-1。
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <ctype.h>
#include <errno.h> // 错误码
bool is_valid_int(char* str, long long max) {
errno = 0;
long long num = strtol(str, NULL, 10); // 尝试转换为long long
if (errno == ERANGE && num > max) { // 如果溢出且大于最大值
return false;
}
if (errno == ERANGE || num < 0) { // 其他错误或负数
return false;
}
return true;
}
int find_and_output_first_integer(const char* str) {
const long long MAX_INT = 1e9; // 定义最大允许整数值
for (size_t i = 0; str[i] != '\0'; i++) {
if (isdigit(str[i]) || (isupper(str[i]) && isalpha(str[i]))) { // 只考虑字母和数字字符
char prefix[10]; // 前缀存储正在读取的部分
prefix[0] = str[i];
prefix[1] = '\0';
// 接下来的部分需要递归,因为可能有多个连续的数字
if (is_valid_int(prefix, MAX_INT)) {
while (i + 1 < strlen(str) && (isdigit(str[i + 1]) || (isupper(str[i + 1]) && isalpha(str[i + 1])))) {
prefix[1] = str[++i];
prefix[2] = '\0';
if (is_valid_int(prefix, MAX_INT)) {
continue;
} else {
break;
}
}
if (is_valid_int(prefix, MAX_INT)) {
return (int)num; // 转换回int类型并返回
}
}
}
}
return -1; // 如果找不到有效整数,返回-1
}
int main() {
char input[101];
scanf("%s", input);
int result = find_and_output_first_integer(input);
printf("%d\n", result);
return 0;
}
```
这个程序首先定义了一个`find_and_output_first_integer`函数,它从字符串开头开始搜索整数,直到找到一个或者超过1e9限制。注意,对于输入字符串中可能存在的连续的数字,我们使用递归来处理它们。
阅读全文