服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - 剑指Offer之Java算法习题精讲字符串与二叉搜索树

剑指Offer之Java算法习题精讲字符串与二叉搜索树

2022-10-11 14:05明天一定. Java教程

跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化

题目一

剑指Offer之Java算法习题精讲字符串与二叉搜索树

解法

class Solution {
  public boolean repeatedSubstringPattern(String a) {
      for (int i = 1; i <=a.length()/2 ; i++) {
          String s = a.substring(0, i);
          StringBuffer sb = new StringBuffer();
          while (sb.length()<a.length()){
              sb.append(s);
          }
          if(sb.toString().equals(a)){
              return true;
          }
      }
      return false;
  }
}

 

题目二

剑指Offer之Java算法习题精讲字符串与二叉搜索树

解法

class Solution {
  public boolean detectCapitalUse(String word) {
      if(word.toLowerCase().equals(word)||word.toUpperCase().equals(word)||word.substring(1, word.length()).toLowerCase().equals(word.substring(1, word.length()))) return true;
      return false;
  }
}

 

题目三

剑指Offer之Java算法习题精讲字符串与二叉搜索树

解法

二叉搜索树有个性质为二叉搜索树中序遍历得到的值序列是递增有序的

/**
* Definition for a binary tree node.
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode() {}
*     TreeNode(int val) { this.val = val; }
*     TreeNode(int val, TreeNode left, TreeNode right) {
*         this.val = val;
*         this.left = left;
*         this.right = right;
*     }
* }
*/
class Solution {
  int ans;
  int pre;
  public int getMinimumDifference(TreeNode root) {
      ans = Integer.MAX_VALUE;
      pre = -1;
      method(root);
      return ans;
  }
  public void method(TreeNode root){
      if(root==null){
          return;
      }
      method(root.left);
      if(pre==-1){
          pre = root.val;
      }else{
          ans = Math.min(ans, root.val - pre);
          pre = root.val;
      }
      method(root.right);
  }
}

 

题目四

剑指Offer之Java算法习题精讲字符串与二叉搜索树

解法

class Solution {
  public String reverseStr(String a, int k) {
      int con = 1;
      StringBuffer sb = new StringBuffer();
      while (con*k<=a.length()){
          String substring = a.substring((con - 1) * k, con * k);
          if(con%2==0){
              sb.append(substring);
              con++;
          }else {
              for (int i1 = substring.length()-1; i1 >=0 ; i1--) {
                  sb.append(substring.charAt(i1));
              }
              con++;
          }
      }
      if((con-1)*k<a.length()){
          String s = a.substring((con-1) * k, a.length());
          if(con%2!=0){
              for (int i1 = s.length()-1; i1>=0; i1--) {
                  sb.append(s.charAt(i1));
              }
          }else {
              sb.append(s);
          }
      }
      return sb.toString();
  }
}

到此这篇关于剑指Offer之Java算法习题精讲字符串与二叉搜索树的文章就介绍到这了,更多相关Java 二叉搜索树内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/wai_58934/article/details/123238011

延伸 · 阅读

精彩推荐