Problem: HJ26 字符串排序
题目描述
描述
编写一个程序,将输入字符串中的字符按如下规则排序。
规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
如,输入: Type 输出: epTy
规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
如,输入: BabA 输出: aABb
规则 3 :非英文字母的其它字符保持原来的位置。
如,输入: By?e 输出: Be?y
数据范围:
输入描述:
输入字符串
输出描述:
输出字符串
示例1
输入:
A Famous Saying: Much Ado About Nothing (2012/8).
输出:A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).
算法流程
- 将输入字符串转换为字符数组
- 使用两个指针,一个指向字符串的开头,一个指向字符串的末尾
代码
function sortString(input) {
const chars = input.split('');
let start = 0;
let end = chars.length - 1;
while (start < end) {
const char = chars[start].toLowerCase();
if (isEnglishLetter(char)) {
chars[start] = char;
start++;
} else {
const temp = chars[start];
chars[start] = chars[end];
chars[end] = temp;
end--;
}
}
return chars.join('');
}
function isEnglishLetter(char) {
return /^[a-zA-Z]$/.test(char);
}
复杂度
-
时间复杂度:
-
空间复杂度: