校招算法笔面试 | 华为机试-图片整理

题目

题目链接

解题思路

  1. 读取输入字符串
  2. 将字符串转换为字符数组
  3. 使用排序算法对字符按ASCII码值从小到大排序
  4. 输出排序后的字符串

注意:

  • ASCII码顺序:数字(48-57) < 大写字母(65-90) < 小写字母(97-122)
  • 可以直接使用语言内置的排序函数,因为字符比较默认就是按ASCII值比较

代码

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main() {
    string str;
    cin >> str;
    
    // 转换为字符数组并排序
    sort(str.begin(), str.end());
    
    cout << str << endl;
    return 0;
}
def sort_string():
    # 读取输入并排序
    s = input()
    sorted_s = ''.join(sorted(s))
    print(sorted_s)

if __name__ == "__main__":
    sort_string()
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        
        // 转换为字符数组
        char[] chars = str.toCharArray();
        // 排序
        Arrays.sort(chars);
        
        System.out.println(new String(chars));
    }
}

算法及复杂度

  • 算法:字符排序
  • 时间复杂度: O ( n log ⁡ n ) \mathcal{O}(n\log n) O(nlogn),其中 n 为字符串长度
  • 空间复杂度: O ( n ) \mathcal{O}(n) O(n),需要存储字符数组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值