zoukankan      html  css  js  c++  java
  • 面试题 01.03. URL化

    URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)

    示例1:

     输入:"Mr John Smith    ", 13
     输出:"Mr%20John%20Smith"
    

    示例2:

     输入:"               ", 5
     输出:"%20%20%20%20%20"
    

    提示:

    1. 字符串长度在[0, 500000]范围内
    2. https://leetcode-cn.com/problems/string-to-url-lcci/
    3. https://www.cnblogs.com/WLCYSYS/p/13372866.html
    4. 这里的13是有效的长度
    class Solution {
        public String replaceSpaces(String S, int length) {
            return S.substring(0, length).replaceAll(" ", "%20");
    
        }
    }

     second:

    class Solution {
        public String replaceSpaces(String S, int length) {
           StringBuilder sb = new StringBuilder();
    
           for(int i = 0;i < length; i++){
                    if(S.charAt(i) != ' '){
                    sb.append(S.charAt(i));
                    }else{
               sb.append("%20");
                    }
           }
           return sb.toString();
    
            
        }
    
        }

    substring

    public String substring(int beginIndex,
                            int endIndex)
    返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex

    示例:

     "hamburger".substring(4, 8) returns "urge"
     "smiles".substring(1, 5) returns "mile"
     
    参数:
    beginIndex - 起始索引(包括)。
    endIndex - 结束索引(不包括)。
    返回:
    指定的子字符串。
    抛出:
    IndexOutOfBoundsException - 如果 beginIndex 为负,或 endIndex 大于此 String 对象的长度,或 beginIndex 大于 endIndex

    replace

    public String replace(char oldChar,
                          char newChar)
    返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。

    如果 oldChar 在此 String 对象表示的字符序列中没有出现,则返回对此 String 对象的引用。否则,创建一个新的 String 对象,它所表示的字符序列除了所有的 oldChar 都被替换为 newChar 之外,与此 String 对象表示的字符序列相同。

    示例:

    "mesquite in your cellar".replace('e', 'o')
             returns "mosquito in your collar"
     "the war of baronets".replace('r', 'y')
             returns "the way of bayonets"
     "sparring with a purple porpoise".replace('p', 't')
             returns "starring with a turtle tortoise"
     "JonL".replace('q', 'x') returns "JonL" (no change)
     
    参数:
    oldChar - 原字符。
    newChar - 新字符。
    返回:
    一个从此字符串派生的字符串,它将此字符串中的所有 oldChar 替代为 newChar

    类 StringBuilder

    java.lang.Object
      

    继承者

    java.lang.StringBuilder
    
    所有已实现的接口:
    Serializable, Appendable, CharSequence

    public final class StringBuilderextends Objectimplements Serializable, CharSequence
    
    

    一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

    StringBuilder 上的主要操作是 appendinsert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串生成器中。append 方法始终将这些字符添加到生成器的末端;而 insert 方法则在指定的点添加字符。

    例如,如果 z 引用一个当前内容为 "start" 的字符串的生成器对象,则该方法调用 z.append("le") 将使字符串生成器包含 "startle",而 z.insert(4, "le") 将更改字符串生成器,使之包含 "starlet"。

    通常,如果 sb 引用 StringBuilder 的实例,则 sb.append(x)sb.insert(sb.length(), x) 具有相同的效果。每个字符串生成器都有一定的容量。只要字符串生成器所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区。如果内部缓冲区溢出,则此容量自动增大。

    StringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer。 

  • 相关阅读:
    4g项目shell脚本
    shell脚本执行方法
    linux 4g项目定时启动脚本
    java面试-mysql优化
    java面试-java8特性
    java面试-oom内存溢出有几种类型
    java面试-动态代理
    java面试-ThreadLocal
    java面试-类加载过程
    java面试-JVM内存模型
  • 原文地址:https://www.cnblogs.com/WLCYSYS/p/13372866.html
Copyright © 2011-2022 走看看