第190場周賽

5416. 檢查單詞是否爲句中其他單詞的前綴

class Solution {
    public int isPrefixOfWord(String sentence, String searchWord) {
        String []  chars = sentence.split(" ");
    	int len = chars.length;
    	int compareLen = searchWord.length();
    	int res = -1;
    	for(int i=0;i<len;i++) {
    		int curStrLen = chars[i].length();
    		if(curStrLen<compareLen) {
    			continue;
    		}
    		String firstStr = chars[i].substring(0, compareLen);
    		if(firstStr.equals(searchWord)) {
    			res = i+1;
                break;
    		}
    	}
    	return res;
    }
}

5417. 定長子串中元音的最大數目

class Solution {
    public int maxVowels(String s, int k) {
        int len=s.length();
    	if(len<k) {
    		return 0;
    	}
    	int res = 0;
    	int[] maxLen = new int[len+1];
    	
    	for(int i=1;i<=k;i++) {
    		char cur = s.charAt(i-1);
    		if(cur=='a' ||cur=='e' ||cur=='i'||cur=='o'||cur=='u') {
    			maxLen[i]=maxLen[i-1]+1;
    		}else {
    			maxLen[i]=maxLen[i-1];
    		}
    	}
    	res = res>maxLen[k]?res:maxLen[k];
    	
    	for(int i=k+1;i<=len;i++) {
    		char cur = s.charAt(i-1);
    		char former = s.charAt(i-1-k);
			boolean flag = false;
			if(former=='a' ||former=='e' ||former=='i'||former=='o'||former=='u') {
				flag = true;
			}else {
				flag = false;
			}
    		if(cur=='a' ||cur=='e' ||cur=='i'||cur=='o'||cur=='u') {
    			
    			if(flag) {
    				maxLen[i]=maxLen[i-1];
    			}else {
    				maxLen[i]=maxLen[i-1]+1;
    			}
    		}else {
    			if(flag) {
    				maxLen[i]=maxLen[i-1]-1;
    			}else {
    				maxLen[i]=maxLen[i-1];
    			}
    			
    		}
    		res = res>maxLen[i]?res:maxLen[i];
    	}
    	
    	

    	return res;
    }
}

5418. 二叉樹中的僞迴文路徑

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
     public int pseudoPalindromicPaths (TreeNode root) {
        if(root==null) {
        	return 0;
        }
        if(root.left==null && root.right==null) {
        	return 1;
        }
        
        Set<Integer> set = new HashSet<Integer>();
        //set.add(root.val);
        int res = maxPaths(root,set);
        return res;
    }

	public int maxPaths (TreeNode root,Set<Integer> set) {
//		System.out.println("curr node:"+root.val);
		boolean flag = true;
		if(set.contains(root.val)) {
			flag = false;
			set.remove(root.val);
		}else {
			flag = true;
			set.add(root.val);
		}
//		for(Integer s:set) {
//			System.out.print(s+" ");
//		}
//		System.out.println();
		
		if(root.left==null && root.right==null) {
			//判斷是否是僞迴文
			int size = 0;
			if(set.size()<=1) {	
				size = 1;
			}
			if(!flag) {
				set.add(root.val);
			}else{
				set.remove(root.val);
			}
			return size;
		}

		

		
		int left = 0;
		if(root.left!=null) {
			left = maxPaths(root.left,set);
			
		}
		int right = 0;
		if(root.right!=null) {
			right = maxPaths(root.right,set);
		}
		

		if(!flag) {
			set.add(root.val);
		}else{
			set.remove(root.val);
		}
		
		return left+right;
	
	}
}

在這裏插入圖片描述
這次首次在一個半小時內完成三道題,但是排名還是不高
目標,以後穩定完成3道題的前提下,衝進1K內

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章