蓝桥杯 字符串-去掉重复-字符排序

import java.util.Arrays;
import java.util.Scanner;

//从键盘读入一个由字母构成的串(不大于30个字符)。
//从该串中取出3个不重复的字符,求所有的取法。
//取出的字符,要求按字母升序排列成一个串。
//不同的取法输出顺序可以不考虑。
//例如:
//输入:
//abc
//则输出:
//abc
//
//输入:
//abcd
//则输出:
//abc
//abd
//acd
//bcd
//输入:
//abcaa
//则输出:
//abc
class Title3{
public static void main(String[] args){
//首先去掉重复的字符
Scanner input = new Scanner(System.in);
String str=input.next();
String newStr="";

//首先去掉重复的字母
for(int i=0;i<str.length();i++){
String temp = str.charAt(i)+"";
if(newStr.indexOf(temp)==-1){
newStr+=temp;
}
}
char[] arr = new char[newStr.length()];
for(int i=0;i<newStr.length();i++){
arr[i] = newStr.charAt(i);
}
//排序
Arrays.sort(arr);

//三三组合
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
for(int n=j+1;n<arr.length;n++){
System.out.println(arr[i]+""+arr[j]+""+arr[n]+" ");
}
}
}

}
}
### 字符串的定义与操作 字符串蓝桥杯考试大纲中常见的数据结构之一,通常用于处理文本信息。字符串可变的数据类型,这意味着一旦创建,就能修改其内容。字符串可以通过单引号、双引号或三引号定义,其中三引号支持多行字符串的定义。 ```python s1 = 'Hello' s2 = "World" s3 = '''This is a multi-line string''' ``` 字符串支持索引访问和切片操作,索引从 0 开始,负数索引表示从末尾开始计数。切片操作可以获取字符串的子串。 ```python s = "Python" print(s[0]) # P print(s[-1]) # n print(s[0:6]) # Python ``` 字符串的连接和重复可以通过 `+` 和 `*` 运算符实现,而字符串的长度则可以通过 `len()` 函数获取。 ```python s1 = "Hello" s2 = "World" print(s1 + " " + s2) # Hello World print(len(s1)) # 5 ``` ### 字符串的常见方法 蓝桥杯考试大纲中涉及字符串的常见方法包括大小写转换、查找、替换、除空白字符和分割等操作。这些方法可以高效地处理字符串数据。 字符串提供了 `upper()`、`lower()`、`capitalize()` 和 `title()` 等方法进行大小写转换。 ```python s = "hello world" print(s.upper()) # HELLO WORLD print(s.capitalize()) # Hello world print(s.title()) # Hello World ``` 字符串支持 `find()` 和 `replace()` 方法进行查找和替换操作。 ```python s = "hello world" print(s.find("world")) # 6 print(s.replace("world", "Python")) # hello Python ``` 字符串可以通过 `strip()`、`lstrip()` 和 `rstrip()` 方法除前后、左侧或右侧的空白字符。 ```python s = " hello world " print(s.strip()) # hello world ``` 字符串可以通过 `split()` 方法按指定分隔符进行分割。 ```python s = "apple,banana,orange" print(s.split(",")) # ['apple', 'banana', 'orange'] ``` ### 字符串的格式化与高级技巧 蓝桥杯考试大纲中涉及字符串的格式化方法,包括 `%` 操作符、`str.format()` 方法以及 f-strings。其中,f-strings 是推荐的格式化方式,因为它提供了更简洁和直观的语法。 ```python name = "Alice" age = 25 print(f"My name is {name} and I am {age} years old.") ``` 字符串拼接的效率问题需要注意。由于字符串可变的,频繁使用 `+` 或 `+=` 进行拼接会导致性能下降。推荐使用 `join()` 方法进行高效拼接。 ```python words = ["hello", "world", "Python"] sentence = " ".join(words) print(sentence) # hello world Python ``` ### 字符串的常用方法 蓝桥杯考试大纲中还涉及字符串的其他常用方法,包括 `isalpha()`、`isdigit()`、`isalnum()`、`count()` 和 `index()` 等。这些方法可以用于验证字符串的组成或统计子字符串的出现次数。 ```python s = "Python123" print(s.isalpha()) # False print(s.isdigit()) # False print(s.count("n")) # 1 ``` ### 相关算法与题目类型 蓝桥杯考试大纲中涉及字符串的相关算法主要包括字符串匹配、子串查找、字符串排序等。常见的题目类型包括字符串反转、回文判断、字符串压缩等。 字符串匹配是蓝桥杯考试中的高频考点之一。常见的字符串匹配算法包括 KMP 算法和 BM 算法。KMP 算法通过构建部分匹配表来优化匹配过程,从而提高匹配效率。 ```python def kmp_match(text, pattern): # 构建部分匹配表 def build_lps(pattern): lps = [0] * len(pattern) length = 0 i = 1 while i < len(pattern): if pattern[i] == pattern[length]: length += 1 lps[i] = length i += 1 else: if length != 0: length = lps[length - 1] else: lps[i] = 0 i += 1 return lps lps = build_lps(pattern) i = j = 0 while i < len(text): if pattern[j] == text[i]: i += 1 j += 1 if j == len(pattern): return i - j elif i < len(text) and pattern[j] != text[i]: if j != 0: j = lps[j - 1] else: i += 1 return -1 ``` 字符串排序蓝桥杯考试中的常见问题之一。常见的字符串排序方法包括冒泡排序、快速排序等。快速排序蓝桥杯考试中的高频考点之一,适用于大规模数据的排序。 ```python def quick_sort(arr): if len(arr) <= 1: return arr else: pivot = arr[len(arr) // 2] left = [x for x in arr if x < pivot] middle = [x for x in arr if x == pivot] right = [x for x in arr if x > pivot] return quick_sort(left) + middle + quick_sort(right) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值