zoukankan      html  css  js  c++  java
  • 剑指offer之字符串

    总结:

    1. 思路:扩容后,从后向前扫描,设置两个指针,从而减少从前往后的移动次数
       1 /*面试题5:时间复杂度O(n)
       2 请实现一个函数,将一个字符串中的空格替换成“%20”。
       3 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy
       4  */
       5 /*
       6 思路:先扫描一遍,记录空格个数
       7 根据空格个数设置新的字符串长度,
       8 设置两个指针index(原字符串尾部开始)和indexNum(新字符串尾部开始),
       9 (两个指针同时从后向前移动)判断当前index是否为空格,是的话indexNum增添20%,不是的话复制原字符
      10  */
      11 public class ReplaceSpace {
      12     public static String replaceSpace(StringBuffer str){
      13         int len = str.length();
      14         int spaceNum = 0;
      15         for (int i = 0;i < len;i++){
      16             if(str.charAt(i) == ' ') spaceNum++;
      17         }
      18         int index = len - 1,indexNew = len + 2*spaceNum - 1;
      19         str.setLength(indexNew+1);//注意长度
      20         for (;index >= 0;index--){
      21             if(str.charAt(index) == ' '){
      22                 str.setCharAt(indexNew--,'0');
      23                 str.setCharAt(indexNew--,'2');
      24                 str.setCharAt(indexNew--,'%');
      25                 }
      26             else str.setCharAt(indexNew--,str.charAt(index));
      27         }
      28         return str.toString();
      29 
      30     }
      31     public static void main(String args[]){
      32         StringBuffer str = new StringBuffer();
      33         Scanner cin = new Scanner(System.in);
      34         str.append(cin.nextLine());
      35         System.out.println(replaceSpace(str));
      36     }
      37 }
  • 相关阅读:
    机器学习之逻辑回归
    机器学习之线性回归与模型保存
    机器学习之决策树
    机器学习之贝叶斯算法
    机器学习之KNN算法
    算法基础与开发流程
    特征选择与特征降维
    特征预处理
    RSA加密算法和签名算法
    Java中使用OpenSSL生成的RSA公私钥
  • 原文地址:https://www.cnblogs.com/lizijiangmm/p/8798905.html
Copyright © 2011-2022 走看看