美文网首页
2022-01-06 71. 简化路径

2022-01-06 71. 简化路径

作者: 16孙一凡通工 | 来源:发表于2022-01-06 09:52 被阅读0次

    把字符串分割成字符数组,接着应用ArrayDeque容器作栈,进行操作。注意“.."和“.”的情况。

    java版本:

    class Solution {
        public String simplifyPath(String path) {
        
        String[] nums=path.split("/");
        ArrayDeque<String> stack = new ArrayDeque<>();
        for(String num:nums){
         if(num.equals("..")){
             if(!stack.isEmpty()){
             stack.pollLast();
             }
           
         }else if(num.length()>0 && !num.equals(".")){
             stack.offerLast(num);
         }
    
        }
        StringBuffer res=new StringBuffer();
    
      if(stack.isEmpty()){
          res.append("/");
      }else{
       while(!stack.isEmpty()){
           res.append("/");
           res.append(stack.pollFirst());
       }
      }
       return res.toString();
    }
    }
    

    II 018. 有效的回文

    class Solution {
        public boolean isPalindrome(String s) {
            
            String s_l=s.toLowerCase();
            int left=0,right=s.length()-1;
            int s_left=0,s_right=0;
            int count=0;
            while(left<right){
             s_left=s_l.charAt(left)-'a';
             s_right=s_l.charAt(right)-'a';
      
             if(s_left<-50 || (s_left>-40 && s_left<0) || s_left>=26  ){
               left++;
               continue;
             }
            
              if(s_right<-50  || (s_right>-40 && s_right<0) || s_right>=26 ){
               right--;
               continue;
              }
              if(left!=right && s_right==s_left){
                  count++;
              }
            
              if(s_left!=s_right ){
                 return false;
              }
              count++;
              left++;
              right--;
    
    
            }
            if(s.length()<=1){
                return true;
            }
       
           
            return true;
    
    
        }
    }
    
    

    II 020. 回文子字符串的个数

    双指针,参考了官方的题解。

    class Solution {
        public int countSubstrings(String s) {
            int n=s.length();
             int res=0;
          for(int i=0;i<2*n-1;i++){
          int l=i/2,r=i/2+i%2;
         
         while(l>=0 && r<n && s.charAt(l)==s.charAt(r)){
             l--;
             r++;
              res++;
           }
          }
          return res;
        
    
        }
    }
    

    相关文章

      网友评论

          本文标题:2022-01-06 71. 简化路径

          本文链接:https://www.haomeiwen.com/subject/wwmlcrtx.html