返回题库算法与数据结构刷题字符串 · 第 2 / 3 篇

算法选择题:字符串(5 题)

011 在 C# 中统计字符串里用户可见的字符个数,哪种表述准确?

难度: 综合

  • A. 所有 Unicode 字符都能放进单个 char,无需特殊处理
  • B. 一个 char 一定对应一个用户看到的字符
  • C. char 表示 UTF-16 代码单元,不保证对应完整可见字符;补充字符应按 Rune 处理,组合字符可能还需按文本元素处理
  • D. s.Length 就是用户可见字符数
查看答案与解析

正确答案C

正确原因: C# char 表示 UTF-16 代码单元,不保证对应完整可见字符;补充字符应按 Rune,组合字符可能还需按文本元素处理。

错误选项辨析: A 项:char 只有 16 位,超出基本多语言平面的字符需要代理项对;B 项:emoji 等补充字符由两个 char(代理项对)组成,一个 char 并不完整;D 项:Length 统计的是 UTF-16 代码单元数,会多算补充字符。

012 需要判断两段代码中的方法名是否相同(忽略大小写),哪种做法最合适?

难度: 进阶

  • A. 先 ToLower 再比较,在所有文化下都等价且无分配
  • B. 标识符比较应使用 Ordinal 或 OrdinalIgnoreCase;面向用户的语言排序才使用明确的文化规则
  • C. == 运算符与 string.Equals 总是采用文化规则,结果一致
  • D. 用默认的 CurrentCulture 比较最稳妥,因为它最贴近用户习惯
查看答案与解析

正确答案B

正确原因: 标识符通常使用 Ordinal 或 OrdinalIgnoreCase 比较;面向用户的语言排序才使用明确文化规则。

错误选项辨析: A 项:ToLower 会产生新字符串,且某些文化下大小写映射与 Ordinal 不一致;C 项:== 与默认 Equals 对字符串采用 Ordinal 规则,并非文化规则;D 项:文化比较用于用户展示与排序,用于标识符可能产生意外的等价关系。

013 关于 C# 字符串不可变性,哪种表述准确?

难度: 基础

  • A. 循环拼接与 StringBuilder 的分配成本完全相同
  • B. 字符串变量可以重新赋值,说明字符串内容是可变的
  • C. string.Replace 等操作会原地修改原字符串
  • D. 字符串修改操作返回新实例或复用已有实例,原实例不变;循环拼接可能产生大量中间分配
查看答案与解析

正确答案D

正确原因: 字符串修改操作返回新实例或复用已有实例;循环拼接可能产生大量中间分配。

错误选项辨析: A 项:循环 += 每次生成新字符串,中间分配远多于 StringBuilder;B 项:变量重绑定不等于内容可变,原字符串对象仍不可变;C 项:Replace 返回新字符串,原实例不会被修改。

014 在循环中拼接大量未知数量的字符串片段,应选择哪种方式?

难度: 进阶

  • A. 未知次数的循环拼接优先使用 StringBuilder;少量固定片段直接插值通常更清晰
  • B. 任何字符串连接都必须使用 StringBuilder
  • C. 循环中使用 += 与 StringBuilder 一样是 O(n) 总成本,无需区分
  • D. 字符串插值会产生编译错误,只能使用 StringBuilder
查看答案与解析

正确答案A

正确原因: 未知次数的循环拼接适合使用 StringBuilder;少量固定片段直接插值通常更清晰。

错误选项辨析: B 项:少量固定片段用插值更清晰,不应教条化;C 项:字符串不可变使 += 每次复制已有内容,总成本为 O(n²);D 项:插值是合法的 C# 语法,只是不适合超长循环拼接。

015 实现“回文串”判断前,必须先明确什么?

难度: 进阶

  • A. 先 ToLower 再比较一定正确且无分配
  • B. 必须明确是否忽略大小写、空格与符号,以及是否做 Unicode 规范化;不同契约会改变合法字符的提取与比较方式
  • C. 反转原字符串即可覆盖所有回文定义
  • D. 回文判断与字符集无关,任何输入都可以直接比较
查看答案与解析

正确答案B

正确原因: 编码前必须明确是否忽略符号、大小写和 Unicode 规范化;不同契约会改变合法字符提取与比较方式。

错误选项辨析: A 项:ToLower 有分配,且只覆盖大小写,不覆盖符号与规范化;C 项:反转只解决顺序判断,不处理大小写、符号与规范化契约;D 项:Unicode 组合字符与大小写会使直接比较在特定契约下出错。

当前分类

字符串

查看全部分类 →
  1. 01算法专题:字符串
  2. 02算法选择题:字符串(5 题)5 题
  3. 03算法编程题:字符串(8 题)8 题
ESC

输入关键词开始搜索