首页 > 学院 > 开发设计 > 正文

LeetCode String专题

2019-11-14 09:37:55
字体:
来源:转载
供稿:网友

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所在的索引,导致效率不高。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表