编辑
Ransom Note
本文访问次数:0
  1. 1. 问题链接
  2. 2. 问题描述
  3. 3. 解决办法

问题链接

Ransom Note | LeetCode OJ

问题描述

给定任意勒索字符串,同时有一个杂志字符串,如果勒索字符串的所有字符都可以从杂志字符串找到,那么返回true,否则,它将返回false。在该杂志的字符串每个字母只能在你的赎金笔记使用一次。你可以假设两个字符串仅包含小写字母。例如:

canConstruct("a", "b") -> false
canConstruct("aa", "ab") -> false
canConstruct("aa", "aab") -> true

解决办法

以下为我的解决方法,语言为Java

public class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        while(ransomNote.length() > 0){
            if(ransomNote.length() == 1){
                return magazine.contains(ransomNote);
            }
            else{
                String a = ransomNote.substring(0,1);
                ransomNote = ransomNote.substring(1);
                int position = magazine.indexOf(a);
                if(position >= 0){
                    magazine = remove(magazine,position);
                }
                else{
                    return false;
                }
            }
        }
        return true;
    }

    public String remove(String s,int position){
        int originalLength = s.length();
        if (position == 0){
            s = s.substring(1);
        }
        else if(position == originalLength){
            s = s.substring(0,position);
        }
        else{
            s = s.substring(0,position)+s.substring(position+1,originalLength);
        }
        return s;
    }
}

需要输入验证码才能留言

没有任何评论