给出一个字符串 str
,你需要按顺序提取出该字符串的符号和单词。
样例
样例 1:
输入: str = "(hi (i am)bye)"
输出:["(","hi","(","i","am",")","bye",")"].
解释:将符号和单词分割。
样例 2:
输入: str = "#ok yes"
输出:["#","ok","yes"]
解释:将符号和单词分割。
样例 3:
输入: str = "##s"
输出:["#","#","s"]
解释:将符号和单词分割。
注意事项
- str长度不会超过
10000
。 - 字符串只包含小写字母,符号和空格。
解题思路:
分情况讨论即可。
public class Solution {
/**
* @param str: The input string
* @return: The answer
*/
public String[] dataSegmentation(String str) {
// Write your code here
List<String> list = new ArrayList<>();
StringBuilder sb = new StringBuilder();//用于提取每个单词
for(char c : str.toCharArray()){
if(c >= 'a' && c <= 'z'){ //小写字母
sb.append(c);
}else if(c == ' '){ //空格
if(sb.length() != 0){
list.add(sb.toString());
sb = sb.delete(0, sb.length());
}
}else{ //其他符号
if(sb.length() != 0){
list.add(sb.toString());
sb = sb.delete(0, sb.length());
}
list.add(String.valueOf(c));
}
}
//不要放过最后一个单词
if(sb.length() != 0)
list.add(sb.toString());
String[] res = new String[list.size()];
for(int i=0; i<res.length; i++)
res[i] = list.get(i);
return res;
}
}