鱼C论坛

 找回密码
 立即注册
查看: 937|回复: 0

[学习笔记] leetcode 1047. Remove All Adjacent Duplicates In String

[复制链接]
发表于 2019-9-29 23:25:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. Given a string S of lowercase letters, a duplicate removal consists of choosing two adjacent and equal letters, and removing them.

  2. We repeatedly make duplicate removals on S until we no longer can.

  3. Return the final string after all such duplicate removals have been made.  It is guaranteed the answer is unique.



  4. Example 1:

  5. Input: "abbaca"
  6. Output: "ca"
  7. Explanation:
  8. For example, in "abbaca" we could remove "bb" since the letters are adjacent and equal, and this is the only possible move.  The result of this move is that the string is "aaca", of which only "aa" is possible, so the final string is "ca".


  9. Note:

  10. 1 <= S.length <= 20000
  11. S consists only of English lowercase letters.
复制代码

  1. class Solution {
  2.     public String removeDuplicates(String S) {
  3.         if(S.length() == 0) return S;
  4.         int i = 0;
  5.         while(i != S.length()){
  6.             if(i < S.length() -1 && S.charAt(i) == S.charAt(i+1)){
  7.                 S = S.substring(0, i)+S.substring(i+2);
  8.                 break;
  9.             }
  10.             i++;
  11.         }
  12.         if(i == S.length()) return S;
  13.         return removeDuplicates(S);
  14.     }
  15. }
复制代码

  1. class Solution {
  2.     public String removeDuplicates(String S) {
  3.         List<Character> list = new ArrayList<>();
  4.         for(int i = 0; i < S.length(); i++){
  5.             if(list.size() != 0 && list.get(list.size() - 1)  == S.charAt(i)){
  6.                 list.remove(list.size()-1);
  7.             }else{
  8.                 list.add(S.charAt(i));
  9.             }
  10.         }
  11.         
  12.         String ret = "";
  13.         for(int i = 0; i < list.size(); i++){
  14.             ret = ret + list.get(i);
  15.         }
  16.         return ret;
  17.     }
  18. }
复制代码

  1. class Solution {
  2.     public String removeDuplicates(String S) {
  3.         char[] s = S.toCharArray();
  4.         int i = 0;
  5.         for(int j = 0; j< s.length; j++){
  6.             if(i>0 && s[i-1] == s[j]){
  7.                 i--;
  8.             }
  9.             else{
  10.                 s[i++] = s[j];
  11.             }
  12.         }
  13.         
  14.         return new String(s,0,i);
  15.     }
  16. }
复制代码

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 23:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表