LeetCode String专题

来源:互联网 发布:js click事件兼容性 编辑:程序博客网 时间:2024/05/01 23:51

LeetCode String专题部分,更多说明请见LeetCode Array专题

344. Reverse String

Write a function that takes a string as input and returns the string reversed.

Example:
Given s = “hello”, return “olleh”.

译:实现一个函数可将输入的字符串翻转。

实现

public class Solution {    public String reverseString(String s) {        if (s == null || s.length() == 0) {            return "";        }        char[] chars = s.toCharArray();        StringBuilder sb = new StringBuilder();        for (int index = s.length() - 1; index >= 0; index--) {            sb.append(chars[index]);        }        return sb.toString();    }}

问题分析

效率有待优化。

387. First Unique Character in a String

Given a string, find the first non-repeating character in it and return it’s index. If it doesn’t exist, return -1.

Examples:

s = "leetcode"return 0.s = "loveleetcode",return 2.

Note: You may assume the string contain only lowercase letters.

译:给你一个字符串,找出其中第一个没有重复的字符并返回其索引。如果不存在这样的字符,返回 -1;

实现

public class Solution {    public int firstUniqChar(String str) {        if (str == null || str.length() <= 0) {            return -1;        }        char[] charElements = str.toCharArray();        LinkedHashMap<Character, Integer> boxMap = new LinkedHashMap<>();        for (char element : charElements) {            if (!boxMap.containsKey(element)) {                boxMap.put(element, 1);            } else boxMap.put(element, boxMap.get(element).intValue() + 1);        }        for (char key : boxMap.keySet()) {            if (boxMap.get(key) <= 1 && boxMap.get(key) >= 0) {                for (int index = 0; index < charElements.length; index++) {                    if (charElements[index] == key) {                        return index;                    }                }            }        }        return -1;    }}

问题分析

在此我使用的是LinkedHashMap来进行元素的存储,因为有序,所以避免了顺序混乱的问题。在将字符串转换为char的数组后遍历一次将每个元素以键的形式对应的存在Map的Key中,如果已经存储过的元素则将其的值Value加一,默认为1。全部存储过后再进行Map的查找第一个值为1的Key则命中目标。接着我的实现还有待改善,因为套用了嵌套的for循环二次遍历char数组中该Key所在的索引,导致效率不高。

0 0