#剑指 Offer 58 - I. 翻转单词顺序
class Solution { public String reverseWords(String s) { //s.trim(); String t=s.trim(); //s.split(" ") 只能去除一个空格 //s.split("\s+") 去除一个或多个空格 String[] str=t.split("\s+"); String res=""; for(int i=str.length-1;i>=0;i--){ res=res+str[i]; if(i!=0) res=res+" "; } return res; } }
方法二:
class Solution { public String reverseWords(String s) { int n=s.length(); String res=""; int flag=0; int i=0; while(i方法三:StringBuilder法
class Solution { public String reverseWords(String s) { String[] strs = s.trim().split(" "); // 删除首尾空格,分割字符串 StringBuilder res = new StringBuilder(); for(int i = strs.length - 1; i >= 0; i--) { // 倒序遍历单词列表 if(strs[i].equals("")) continue; // 遇到空单词则跳过 res.append(strs[i] + " "); // 将单词拼接至 StringBuilder } return res.toString().trim(); // 转化为字符串,删除尾部空格,并返回 } }剑指 Offer 12. 矩阵中的路径class Solution { public boolean exist(char[][] board, String word) { if(board.length==0||board[0].length==0) return false; //dfs回溯法 char[] word1=word.toCharArray(); boolean[][] used=new boolean[board.length][board[0].length]; //return dfs(board,word1,used,0,0,0); for(int i=0;iboard.length-1||j<0||j>board[0].length-1||used[i][j]==true||board[i][j]!=word1[start]){ return false; } //注意这个最后一个字符判断正确的前提是前面的条件都满足时,所以要放在后面 if(start==word1.length-1){ return true; } //利用used数组确保字母不能被重复利用 used[i][j]=true; boolean ans=dfs(board,word1,used,i+1,j,start+1) || dfs(board,word1,used,i,j+1,start+1) || dfs(board,word1,used,i,j-1,start+1) || dfs(board,word1,used,i-1,j,start+1) ; used[i][j]=false; return ans; } } 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)