[演算法]括號字串是否合法
括號字串是否合法
某個字串只包括(
和)
,判斷其中的括號是否匹配正確,比如(()())
正確,((())()
錯誤,不允許使用棧
。
這種類似題的常見思路是棧,對於左括號入棧,如果遇到右括號,判斷此時棧頂是不是左括號,是則將其出棧,不是則該括號序列不合法。
面試官要求不能使用棧,可以使用計數器,利用int count
欄位。
12345678910111213141516 |
public static boolean checkBrackets(String str) { char[] cs = str.toCharArray(); int count = 0; for (int i = 0; i < cs.length; i++) { if |
相關推薦
[演算法]括號字串是否合法
括號字串是否合法 某個字串只包括(和),判斷其中的括號是否匹配正確,比如(()())正確,((())()錯誤,不允許使用棧。 這種類似題的常見思路是棧,對於左括號入棧,如果遇到右括號,判斷此時棧
Leetcode演算法——32、最長有效括號字串
給定一個字串,只包含’(‘和’)’。 要求找到最長的有效的子串。 Example 1: Input: “(()” Output: 2 Explanation: The longest valid parentheses substring is “()” Example 2:
【演算法】字串迴圈移位後是否包含
問題 給定兩個字串s1和s2,要求判斷s2是否能夠被通過s1做迴圈移位(rotate)得到的字串包含。 例如,s1=AABCD和s2=CDAA,返回true;給定s1=ABCD和s2=ACBD,返回false。 解法一 最直接最笨的方法就對s1進行迴圈移動,再
Rabin-karp演算法實現 字串匹配
// RabinKarp演算法實現 // RabinKarp演算法實現 const primeRK = 16777619 func hashStr(seq string) (uint32, uint32) { hash := uint32(0) for _, value
KMP演算法(字串)
純模板題:HDU1686 #include<cstdio> #include<cstdlib> #include<cstring> #define INF 1000005 int next[INF]; char a[INF],b[INF]; void
演算法43----字串【同模式】
一、題目:同構字串 給定兩個字串 s 和 t,判斷它們是否是同構的。 如果 s 中的字元可以被替換得到 t ,那麼這兩個字串是同構的。 所有出現的字元都必須用另一個字元替換,同時保留字元的順序。兩個字元不能對映到同一個字元上,但字元可
演算法44----字串解碼【棧】
一、題目:字串解碼 給定一個經過編碼的字串,返回它解碼後的字串。 編碼規則為: k[encoded_string],表示其中方括號內部的 encoded_string 正好重複 k 次。注意 k 保證為正整數。 你可以認為輸入字串總是有效的;輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。
演算法57----字串的交錯組成【動態規劃】
一、題目:交錯字串 給定三個字串 s1, s2, s3, 驗證 s3 是否是由 s1 和 s2 交錯組成的。 示例 1: 輸入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac" 輸出: true
資料結構演算法題/字串按照單詞翻轉要求空間複雜度O(1)
/** * 先直接逆序,這樣確保最後那個單詞在前面了,只不過此時單詞是逆序的 * 然後再對每個逆序的單詞進行調整 */ public class StringWordReverse { public String wordReverse(String str){ //在
Manacher演算法(一個字串中找到最長迴文子串)
零、預備知識 Manacher用於在一個字串中找到最長的迴文子串。 迴文串:正著念和反著念一樣,例如aabbaa,anna等。 注意子串與子序列的區別: 子串必須是在原字元中可以找到的。比如 " I am a student"。am是子串(當然也是子序列),但是aa就不是子串了(是
LeetCode 678. 有效的括號字串(C、C++、python)
給定一個只包含三種字元的字串:( ,) 和 *,寫一個函式來檢驗這個字串是否為有效字串。有效字串具有如下規則: 任何左括號 ( 必須有相應的右括號 )。 任何右括號 ) 必須有相應的左括號 (&
演算法筆記 — 字串去特定字元
題目連結:http://www.codeup.cn/problem.php?cid=100000580&pid=4 題目描述 輸入字串s和字元c,要求去掉s中所有的c字元,並輸出結果。 輸入 測試資料有多組,每組輸入字串s和字元c。 輸出 對於每
演算法65----字串
題目: 判斷兩個字串是否互為變形詞 字串中數字子串的求和 去掉字串中連續出現k個0的子串 判斷兩個字串是否互為旋轉詞 將整數字符串轉成整數值 替換字串中連續出現的指定字串 字串的統計字串 判斷字元陣列中是否所有的字元都只出現過一次 在有序但含有空的陣列中查詢字串 字
C++ Leetcode初級演算法之字串中的第一個唯一字元
給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = “leetcode” 返回 0. s = “loveleetcode”, 返回 2. 注意事項:您可以假定該字串只包含小寫字母。 class Solution { pub
判斷輸入的IP V4地址字串是否合法
輸入描述: 輸入的第一行包括一個整數n(1<=n<=500),代表下面會出現的IP地址的個數。 接下來的n行每行有一個IP地址,IP地址的形式為a.b.c.d,其中a、b、c、d都是整數。 輸出描述: 可能有多組測試資料,對於每組資料,如果IP地址合法則輸出
【演算法】字串的排列與其變式題
面試題38:字串的排列 輸入一個字串,打印出該字串中字元的所有排列。例如輸入字串abc,則打印出由字元a、b、c所能排列出來的所有字串abc、acb、bac、bca、cab和cba。 把第一個字元和後面所有字元交換,則第一個位置可以出現所有種字元。其中又將該字元固
演算法提高 字串跳步
問題描述 給定一個字串,你需要從第start位開始每隔step位輸出字串對應位置上的字元。 輸入格式 第一行一個只包含小寫字母的字串。 第二行兩個非負整數start和step,意義見上
字串演算法 —— 兩字串相同的單詞
1. navie:集合 intersect 以集合的形式分別存放兩字串,然後求集合交集。 def common_words_naive(str1, str2): str1_set = set(str1
最長有效括號字串
題目描述 給定一個只包含 '(' 和 ')' 的字串,找出最長的包含有效括號的子串的長度。 示例 1: 輸入: "(()" 輸出: 2 解釋: 最長有效括號子串為 "()" 示例 2: 輸入: ")()())" 輸出: 4 解釋: 最長有效括號子串為 "()()" 解題思路
貪心演算法之+-字串
思路:兩個字串第i個‘-’的距離 (i從1到字串的‘-’的個數),然後加和即可。(思路還是說不出來,看程式碼) #include <std