public int[] twoSum(int[] numbers, int target) {
if(numbers==null || numbers.length==0)
return null;
int i=0,j=numbers.length-1;
while(i<j){
if(numbers[i]+numbers[j]==target){
return new int[]{i+1,j+1};
}else if(numbers[i]+numbers[j]<target){
i++;
}else{
j--;
}
}
return null;
}
public boolean judgeSquareSum(int c) {
if(c<0)
return false;
int i=0,j=(int)Math.sqrt(c);
while(i<=j){
int powerSum=i*i+j*j;
if(powerSum==c){
return true;
}else if(powerSum<c){
i++;
}else{
j--;
}
}
return false;
}
private final static HashSet<Character> vowels=new HashSet<>(Arrays.asList('a','e','i','o','u','A','E','I','O','U'));
public String reverseVowels(String s) {
if(s==null || s.length()==0)
return s;
int i=0,j=s.length()-1;
char []chars=s.toCharArray();
while(i<j){
while(i<j && !vowels.contains(chars[i])) i++;
while(i<j && !vowels.contains(chars[j])) j--;
if(i>=j)
break;
char temp=chars[i];
chars[i]=chars[j];
chars[j]=temp;
i++;
j--;
}
return new String(chars);
}
public boolean validPalindrome(String s) {
int i=0,j=s.length()-1;
while(i<j){
if(s.charAt(i)!=s.charAt(j)){
return isPalindrome(s,i+1,j) || isPalindrome(s,i,j-1);
}
i++;
j--;
}
return true;
}
public boolean isPalindrome(String s,int i,int j){
while(i<j){
if(s.charAt(i)!=s.charAt(j)){
return false;
}
i++;
j--;
}
return true;
}
public void merge(int[] nums1, int m, int[] nums2, int n) {
int index=m+n-1;
int index1=m-1,index2=n-1;
while(index1>=0 && index2>=0){
if(nums1[index1]<=nums2[index2]){
nums1[index--]=nums2[index2];
index2--;
}else{
nums1[index--]=nums1[index1];
index1--;
}
}
while(index2>=0){
nums1[index--]=nums2[index2--];
}
}
public boolean hasCycle(ListNode head) {
if(head==null)
return false;
ListNode slow=head;
ListNode fast=head.next;
while(slow!=fast){
if(fast==null || fast.next==null)
return false;
slow=slow.next;
fast=fast.next.next;
}
return true;
}
public String findLongestWord(String s, List<String> d) {
String longestword="";
for(String ss:d){
int l1=longestword.length();
int l2=ss.length();
if(l2 < l1 || (l1==l2 && longestword.compareTo(ss)<=0)){
continue;
}
if(isValid(s,ss)){
longestword=ss;
}
}
return longestword;
}
public boolean isValid(String s,String target){
int i=0,j=0;
while(i<s.length() && j<target.length()){
if(s.charAt(i)==target.charAt(j)){
j++;
}
i++;
}
return j==target.length();
}