LEETCODE65字符分类,medium&easy级别,题目:206473
Posted cutter-point
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LEETCODE65字符分类,medium&easy级别,题目:206473相关的知识,希望对你有一定的参考价值。
今天的字符类还比较简单
package y2019.Algorithm.str.easy; import java.util.HashMap; import java.util.Map; import java.util.Stack; /** * @ClassName IsValid * @Description 20. Valid Parentheses * * Given a string containing just the characters ‘(‘, ‘)‘, ‘‘, ‘‘, ‘[‘ and ‘]‘, determine if the input string is valid. * * An input string is valid if: * * Open brackets must be closed by the same type of brackets. * Open brackets must be closed in the correct order. * Note that an empty string is also considered valid. * * @Author xiaof * @Date 2019/8/4 15:46 * @Version 1.0 **/ public class IsValid public boolean solution(String s) Map comMap = new HashMap(); Stack stack = new Stack(); comMap.put(‘(‘, ‘)‘);comMap.put(‘[‘, ‘]‘);comMap.put(‘‘, ‘‘); //1.遍历字符串,获取每一个字符 char cs[] = s.toCharArray(); for (int i = 0; i < cs.length; ++i) //2.判断是是否是:(,[,中的字符,如果是那么就入栈,如果不是就出栈 if(comMap.containsKey(cs[i])) //如果key包含 stack.push(cs[i]); else if(stack.size() <= 0) return false; //3.判断出栈的数据和当前的数据是否正好配对,如果是,那么就ok,如果不是,那么就false char temp = (char) stack.pop(); if((char) comMap.get(temp) != cs[i]) //如果不等 return false; if(stack.size() > 0) return false; return true; public static void main(String[] args) String s = "()"; IsValid fuc = new IsValid(); fuc.solution(s);
package y2019.Algorithm.str.medium; /** * @ClassName CountSubstrings * @Description 647. Palindromic Substrings * * Given a string, your task is to count how many palindromic substrings in this string. * * The substrings with different start indexes or end indexes are counted as different substrings even they consist of same characters. * * Example 1: * * Input: "abc" * Output: 3 * Explanation: Three palindromic strings: "a", "b", "c". * * * Example 2: * * Input: "aaa" * Output: 6 * Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa". * * 统计字符中是否包含回文字符的字串 * * @Author xiaof * @Date 2019/8/4 16:30 * @Version 1.0 **/ public class CountSubstrings public int solution(String s) //双层循环遍历所有字串 int count = 0; char[] source = s.toCharArray(); for (int i = 0; i < source.length; ++i) for (int j = i; j < source.length; ++j) //遍历所有的字符串 if(isPalindromic(i, j, source)) count++; return count; /** * * @param l 左边索引 * @param r 右边索引 * @param source 原始字符的字符数组 * @return */ public boolean isPalindromic(int l, int r, char[] source) while (l <= r) if (source[l] == source[r]) ++l; --r; else return false; return true;
package y2019.Algorithm.str.medium; import java.util.HashMap; import java.util.Map; /** * @ClassName LengthOfLongestSubstring * @Description 3. Longest Substring Without Repeating Characters * * Given a string, find the length of the longest substring without repeating characters. * * Example 1: * * Input: "abcabcbb" * Output: 3 * Explanation: The answer is "abc", with the length of 3. * Example 2: * * Input: "bbbbb" * Output: 1 * Explanation: The answer is "b", with the length of 1. * Example 3: * * Input: "pwwkew" * Output: 3 * Explanation: The answer is "wke", with the length of 3. * Note that the answer must be a substring, "pwke" is a subsequence and not a substring. * * @Author xiaof * @Date 2019/8/4 17:30 * @Version 1.0 **/ public class LengthOfLongestSubstring public int solution(String s) if(s == null || s.equals("")) return 0; //统计最长连续子字串,那么我们只需要每次剔除重复的那个字符,然后从那个位置开始就可以了 int start = 0, count = 1; Map num = new HashMap(); boolean lastcount = false; char[] source = s.toCharArray(); num.put(source[0], 0); for (int i = 1; i < source.length; ++i) //判断前面的字串中是否有包含,这里要有(int) num.get(source[i]) >= start,而且是大于等于,避免之前跳过的数据干扰,并且不能排除掉起始位置 if (num.containsKey(source[i]) && (int) num.get(source[i]) >= start) //如果包含了,说明之前已经出现重复的字串,那么统计一波 count = Math.max(count, (i - start)); start = (int) num.get(source[i]) + 1; num.put(source[i], i); else num.put(source[i], i); if (i == source.length - 1) lastcount = true; //循环到最后,计算最后一个位置 if (lastcount) count = Math.max(count, (source.length - start)); return count; public static void main(String[] args) String s = "pwwkew"; String s1 = "tmmzuxt"; String s2 = "abcabcbb"; LengthOfLongestSubstring fuc = new LengthOfLongestSubstring(); fuc.solution(s2);
以上是关于LEETCODE65字符分类,medium&easy级别,题目:206473的主要内容,如果未能解决你的问题,请参考以下文章
LEETCODE57数组分类,适中级别,题目:969442695
[leetcode] 264. Ugly Number II (medium)