仅用指定方法实现字符移位匹配词典生成有意义文本的思路咨询
实现思路
1 拆分字符串获取单词列表
- 分别处理乱序文本、词典两个字符串,手动实现单词拆分:
- 遍历字符串的每一位下标(范围从0到
字符串.length() - 1),用charAt(下标)读取当前位字符 - 用临时变量存储正在拼接的当前单词,读到空格时就把临时单词存入对应列表,清空临时变量;读到普通字符就追加到临时变量末尾
- 遍历完成后,把最后剩余的临时单词也存入列表,最终得到两个长度一致的列表:乱序单词列表、词典单词列表
- 遍历字符串的每一位下标(范围从0到
2 实现单词特征生成逻辑
乱序单词和对应的正确单词的字符种类、每个字符的出现次数完全一致,我们可以用「字符按ASCII排序后的字符串」作为唯一匹配特征,两个单词特征相同即可判定为对应关系
- 特征生成全程仅使用允许的三个方法:
- 用
length()拿到单词长度,循环调用charAt()取出所有字符存入临时字符数组 - 手动实现简单排序逻辑(比如冒泡排序),将字符数组按ASCII码从小到大排序
- 把排序后的字符数组拼接成字符串,即为当前单词的特征值
- 用
3 单词匹配与结果拼接
- 先遍历所有词典单词,生成每个单词的特征,存储为「特征-正确单词」的对应关系
- 遍历乱序单词列表的每一项,生成当前乱序单词的特征,用
equals()方法和词典的所有特征比对,找到匹配的正确单词 - 把匹配到的正确单词按照乱序单词的原有顺序拼接,单词之间加空格,即可得到最终的通顺输出
限制说明:整个实现过程不得使用
charAt()、length()、equals()之外的任何字符串、数组内置方法,所有逻辑手动实现即可满足需求。
内容的提问来源于stack exchange,提问作者Ari
相关产品推荐
相关产品推荐

