Java实现从字符序列提取独立单词时输出异常问题求解
问题原因
- 遍历结束未处理最后一段暂存字符:你仅在匹配到空格时才将暂存的单词加入结果列表,若最后一个单词末尾没有空格,就会被直接遗漏,这是你两个测试用例都少最后一个单词的核心原因。
- 分隔符判断逻辑不全:你仅将空格作为单词分隔触发条件,但按照需求所有非英文字母的字符都属于单词分隔符,遇到
#、标点等非字母字符时,也需要触发暂存单词入队和清空逻辑,否则会出现特殊字符两侧字母被错误拼接的问题。
修复后实现
public ArrayList<String> getWords() { ArrayList<String> words = new ArrayList<>(); StringBuilder st = new StringBuilder(); for (int i = 0; i < content.length(); i++) { char s = content.charAt(i); if ((s >= 'a' && s <= 'z') || (s >= 'A' && s <= 'Z')) { st.append(s); } else { if (st.length() > 0) { words.add(st.toString()); st.setLength(0); } } } // 处理遍历结束后剩余的最后一个单词 if (st.length() > 0) { words.add(st.toString()); } return words; } private String content;
内容的提问来源于stack exchange,提问作者River Johnson
相关产品推荐
相关产品推荐

