现获取到一个字符串"90 -7 0 18 2 0 2 2 45 4",其中的数据是空格间隔的一些数字,请使用集合所学知识将字符串中的数值进行降序排序,但不要去除其中的重复数字。
时间: 2024-05-15 12:16:48 浏览: 16
可以按照以下步骤实现:
1. 将字符串按空格分割为一个列表。
2. 将列表中的每个元素转换为整数类型,以便进行比较。
3. 将列表转换为集合,去除重复数字。
4. 将集合转换为列表,并使用sort()方法进行降序排序。
5. 将排序后的列表转换为字符串,以空格分隔数字。
代码如下:
```python
s = "90 -7 0 18 2 0 2 2 45 4"
lst = s.split() # 将字符串按空格分割为列表
lst = [int(x) for x in lst] # 将列表中的每个元素转换为整数类型
s = set(lst) # 将列表转换为集合,去除重复数字
lst = list(s) # 将集合转换为列表
lst.sort(reverse=True) # 对列表进行降序排序
s = " ".join(str(x) for x in lst) # 将列表转换为字符串,以空格分隔数字
print(s) # 输出结果:90 45 18 4 2 0 -7
```
注意:在将列表转换为字符串时,使用了列表推导式和join()方法,可以避免使用循环语句,更加简洁。
相关问题
2. 输入一行字符,分别统计其中英文字母、空格、数字和其他字符个数。
以下是C语言实现输入一行字符,分别统计其中英文字母、空格、数字和其他字符个数的代码:
```c
#include <stdio.h>
int main() {
char c;
int y=0,s=0,k=0,z=0;
printf("请输入一串字符:");
while((c=getchar())!='\n') {
if(c<='z'&&c>='a'||c<='Z'&&c>='z') y++;
else if(c<='9'&&c>='0') s++;
else if(c==' ') k++;
else z++;
}
printf("英文字母有%d个,数字有%d个,空格有%d个,其他字符有%d个",y,s,k,z);
}
```
如何用java中的matches判断一个字符串是否都是由0-9的数字构成
可以使用正则表达式来判断一个字符串是否都是由0-9的数字构成,具体代码如下:
String str = "1234567890";
if (str.matches("[0-9]+")) {
System.out.println("该字符串都是由0-9的数字构成");
} else {
System.out.println("该字符串不是由0-9的数字构成");
}
其中,"[0-9]+"表示匹配一个或多个数字。如果字符串中包含除数字以外的字符,matches方法会返回false。