• ReverseString


    今天第一次刷leetcode的题啊,最简单的一题,就出现超时不通过╮(╯▽╰)╭

    题目如下:

    Write a function that takes a string as input and returns the string reversed.
    
    Example:
    Given s = "hello", return "olleh".

     

    我写的代码是:(真的是最笨的方法╮(╯▽╰)╭)

    public static String reverseString(String s) {
            char[] arrs = s.toCharArray();
            String result = "";
            for (int i = (arrs.length - 1); i >= 0; i--) {
                result = result + arrs[i];
            }
            return result;
    }

    提交以后,超时啊~~

    public String reverseString(String s) {
            if(s == null) return null;
            if(s.equals("")) return s;
            char[] arrChar = s.toCharArray();
            for (int i = 0, j = arrChar.length-1; i <= j; i++, j--) {
                char temp = arrChar[i];
                arrChar[i] = arrChar[j];
                arrChar[j] = temp;
            }
            return new String(arrChar);
     }

    看了别人的讨论,如下几种方法 Many acceptable answers

    Cheating Method using StringBuilder

    public class Solution {
        public String reverseString(String s) {
            return  new StringBuilder(s).reverse().toString();
        }
    }

     Classic Method by swapping first and last

    public class Solution {
        public String reverseString(String s) {
            char[] word = s.toCharArray();
            int i = 0;
            int j = s.length() - 1;
            while (i < j) {
                char temp = word[i];
                word[i] = word[j];
                word[j] = temp;
                i++;
                j--;
            }
            return new String(word);
        }
    }

     Same as previous but using byte instead

    public class Solution {
        public String reverseString(String s) {
            byte[] bytes = s.getBytes();
            int i = 0;
            int j = s.length() - 1;
            while (i < j) {
                byte temp = bytes[i];
                bytes[i] = bytes[j];
                bytes[j] = temp;
                i++;
                j--;
            }
            return new String(bytes);
        }
    }

    Classic Method by swapping first and last
    If you don't like temp variable

    public class Solution {
        public String reverseString(String s) {
            byte[] bytes = s.getBytes();
            int i = 0;
            int j = s.length() - 1;
            while (i < j) {
                bytes[i] = (byte)(bytes[i] ^ bytes[j]);
                bytes[j] = (byte)(bytes[i] ^ bytes[j]);
                bytes[i] = (byte)(bytes[i] ^ bytes[j]);
                i++;
                j--;
            }
            return new String(bytes);
        }
    }

    Using recursion

    public class Solution {
        public String reverseString(String s) {
            int length = s.length();
            if (length <= 1) return s;
            String leftStr = s.substring(0, length / 2);
            String rightStr = s.substring(length / 2, length);
            return reverseString(rightStr) + reverseString(leftStr);
        }
    }

     

    脑子短路ing

  • 相关阅读:
    需要应用打开此 exe 解决办法:下载安装某软件所至,中毒了,
    AndroidManifest.xml清单文件详解--application节点
    [CSS 3] Solved: DOM element which is visible but not clickable: pointer-events
    [Cloud Architect] 2. Resiliency
    [Cloud Architect] 1. Design for Availability, Reliability, and Resiliency
    [Supabase] Use Triggers to Automatically Update Your Supabase Tables
    [SAA + SAP] 31. Migrations
    [SAA + SAP] 30. More solution Architectures
    [Javascript] event.target.closest(selector)
    [Javascript] Object.is() vs ===
  • 原文地址:https://www.cnblogs.com/yiruparadise/p/5674983.html
Copyright © 2020-2023  润新知