290. Word Pattern
Given a pattern
and a string str
, find if str
follows the same pattern.
Here follow means a full match, such that there is a bijection between a letter in pattern
and a non-emptyword in str
.
Examples:
- pattern =
"abba"
, str ="dog cat cat dog"
should return true. - pattern =
"abba"
, str ="dog cat cat fish"
should return false. - pattern =
"aaaa"
, str ="dog cat cat dog"
should return false. - pattern =
"abba"
, str ="dog dog dog dog"
should return false.
题目其实很简单,就是要建立起一对一的映射关系
Hashtable建立的是key->value的关系,不能算做一对一
需要两个Hashtable或者一个Hashtable一个set来建立一对一的关系
public class Solution {
public boolean wordPattern(String pattern, String str) {
Map<String,Character> map = new HashMap<>();
Map<Character,String> aMap = new HashMap<>();
String[] strs = str.split(" ");
if(pattern.length()!=strs.length){
return false;
}
for(int i=0;i<pattern.length();++i){
if(aMap.containsKey(pattern.charAt(i)) && map.containsKey(strs[i])
&& !aMap.get(pattern.charAt(i)).equals(strs[i])){
return false;
}
if(aMap.containsKey(pattern.charAt(i)) && !map.containsKey(strs[i])
|| !aMap.containsKey(pattern.charAt(i)) && map.containsKey(strs[i])){
return false;
}
aMap.put(pattern.charAt(i),strs[i]);
map.put(strs[i],pattern.charAt(i));
}
return true;
}
}
283. Move Zeroes
Given an array nums
, write a function to move all 0
's to the end of it while maintaining the relative order of the non-zero elements.
For example, given nums = [0, 1, 0, 3, 12]
, after calling your function, nums
should be [1, 3, 12, 0, 0]
.
Note:
- You must do this in-place without making a copy of the array.
- Minimize the total number of operations.
需要最少的步骤,就不能慢慢移位之类的方法,需要一次性将数字放到位置
使用一个指针,来记录非0数字应该放置的位置
public void moveZeroes(int[] nums) {
int index=0;
for(int i=0;i<nums.length;++i){
if(nums[i]!=0){
nums[index++]=nums[i];
}
}
for(;index<nums.length;++index){
nums[index]=0;
}
}