没了ACE后的字符串操作

1、不分大小写比对:用CString::CompareNoCase

 

2、unicode模式下的atoi: _wtoi()

 

3、strcmp -> wcscmp

### Python机考常见字符串操作练习题目 #### 1. 字符串分割与水仙花数判断 给定一个字符串 `s` 和其 ASCII 编码值,目标是将其划分为多个子串,使每个子串的 ASCII 总和构成一个 **水仙花数**。返回可能的划分次数。 此问题可以通过动态规划或递归来实现,但需要注意性能优化以避免超时[^1]。 ```python def is_narcissistic(num): digits = str(num) n = len(digits) return num == sum(int(d)**n for d in digits) def split_into_narcissistic(s): prefix_sums = [0] total = 0 for char in s: total += ord(char) prefix_sums.append(total) dp = [-1] * (len(s) + 1) dp[0] = 0 for end in range(1, len(s)+1): for start in range(end): substring_sum = prefix_sums[end] - prefix_sums[start] if is_narcissistic(substring_sum) and dp[start] != -1: dp[end] = max(dp[end], dp[start]+1) return dp[-1] print(split_into_narcissistic("abc")) # 示例输入 ``` --- #### 2. 已占用字符集过滤 提供两个字符集合:一个是全量字符集,另一个为已占用字符集。要求从全量字符集中移除所有已占用字符,并输出剩余可用字符集[^3]。 ```python def filter_occupied_characters(full_set, occupied_set): available_chars = ''.join([char for char in full_set if char not in occupied_set]) return available_chars full_set = "abcdefghijklmnopqrstuvwxyz" occupied_set = "aeiou" result = filter_occupied_characters(full_set, occupied_set) print(result) # 输出: bcdfghjklmnpqrstvwxyz ``` --- #### 3. 字符频率统计与排序 对于一段输入字符串,计算其中每个字符出现的频次,并按照以下规则排序后输出: - 首先按字符出现次数降序排列; - 如果次数相同,则按字典顺序升序排列[^5]。 ```python from collections import Counter def count_and_sort_characters(input_str): freq_map = Counter(input_str) sorted_result = sorted(freq_map.items(), key=lambda item: (-item[1], item[0])) result_string = ''.join([key * value for key, value in sorted_result]) return result_string input_str = "aaddccdc" output = count_and_sort_characters(input_str) print(output) # 输出: ddccccaa ``` --- #### 4. 字符串加密算法设计 模拟一种简单的字符串加密逻辑。例如,将字母向右移动指定步数(类似于凯撒密码),并将非字母字符保持不变[^4]。 ```python def caesar_cipher_encrypt(text, shift): encrypted_text = [] for char in text: if 'a' <= char <= 'z': shifted_char = chr((ord(char) - ord('a') + shift) % 26 + ord('a')) encrypted_text.append(shifted_char) elif 'A' <= char <= 'Z': shifted_char = chr((ord(char) - ord('A') + shift) % 26 + ord('A')) encrypted_text.append(shifted_char) else: encrypted_text.append(char) return ''.join(encrypted_text) text = "Hello, World!" shift = 3 encrypted = caesar_cipher_encrypt(text, shift) print(encrypted) # 输出: Khoor, Zruog! ``` --- #### 5. 子序列匹配问题 给定两个字符串 `s` 和 `t`,判断 `t` 是否为 `s` 的子序列。如果是,则返回 `"Yes"`;否则返回 `"No"`。 ```python def is_subsequence(s, t): it = iter(s) return all(char in it for char in t) s = "abcde" t = "ace" if is_subsequence(s, t): print("Yes") # 输出: Yes else: print("No") ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值