数值的整数次方
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。
示例1
输入:2,3
返回值:8.00000
暴力方法

public class Solution {
    public double Power(double base, int exponent) {
        if(exponent<0)
        {
            base=1/base;
            exponent=-exponent;
        }
        double total=1.0d;
        if(exponent>0);
        {
            for(int i=1;exponent>=i;i++)
            {
                total*=base;
            }
        }
        return total;
  }
}

优化方法

public class Solution {
    public double Power(double base, int exponent) {
        if(exponent<0)
        {
            base=1/base;
            exponent=-exponent;
        }
        double x=base;
        double ret=1.0;
        while(exponent!=0)
        {
            if((exponent&1)==1)
            {
                ret*=x;
            }
            x*=x;
            exponent>>=1;
        }
        return ret;
  }
}

测试用例
底数和指数分别为正数、负数和零。

删除链表中重复的结点
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
示例1
输入:{1,2,3,3,4,4,5}
返回值:{1,2,5}

/*
 public class ListNode {
    int val;
    ListNode next = null;
    ListNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {
    public ListNode deleteDuplication(ListNode pHead)
    {
        if(pHead==null)
            return null;
        ListNode head=new ListNode(0);
        head.next=pHead;
        ListNode p=head.next;
        ListNode q=head;
        while(p!=null)
        {
            if(p.next!=null && p.val==p.next.val)
            {
                while(p.next!=null && p.val==p.next.val)
                {
                    p=p.next;
                }
                q.next=p.next;
                p=p.next;
            }
            else{
                p=p.next;
                q=q.next;
            }
        }
        return head.next;
    }
}

正则表达式匹配
请实现一个函数用来匹配包括'.'和''的正则表达式。模式中的字符'.'表示任意一个字符,而''表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"aba"均不匹配。
示例1
输入:"aaa","a
a"
返回值:true

import java.util.Stack;
public class Solution {
    public boolean match(char[] str, char[] pattern)
    {
        if(pattern==null||str==null)
            return false;
        int s=0,p=0;
        return match(str,s,pattern,p);
    }
    public boolean match(char[] str, int s,char[] pattern,int p)
    {
        if(s==str.length&&p==pattern.length)
            return true;
        if(s!=str.length&&p==pattern.length)
            return false;
        if(p+1<pattern.length&&pattern[p+1]=='*')
        {
            if((s!=str.length&&pattern[p]==str[s])||(s!=str.length&&pattern[p]=='.'))
                return match(str,s,pattern,p+2)||match(str,s+1,pattern,p)||match(str,s+1,pattern,p+2);
            else
                return match(str,s,pattern,p+2);
        }
        if((s!=str.length&&pattern[p]==str[s])||(s!=str.length&&pattern[p]=='.'))
            return match(str,s+1,pattern,p+1);
        else
            return false;
    }
}

测试用例
功能测试(模式字符串里包含普通字符、‘.’、‘*’;模式字符串和输入字符串匹配/不匹配);
特殊输入测试(输入字符串和模式字符串是nullptr、空字符串)。

表示数值的字符串
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
示例1
输入:"123.45e+6"
返回值:true

public class Solution {
    public boolean isNumeric(char[] str) {
        if(str.length<0)
            return false;
        boolean a=false,b=false,c=false;
        for(int i=0;i<str.length;i++)
        {
            if(str[i]=='e'||str[i]=='E')
            {
                if(c)
                    return false;
                if(i==str.length-1)
                    return false;
                c=true;
            }
            else if(str[i]=='+'||str[i]=='-')
            {
                if(!a&&i>0&&str[i-1]!='e'&&str[i-1]!='E')
                    return false;
                if(a&&str[i-1]!='e'&&str[i-1]!='E')
                    return false;
                a=true;
            }
            else if(str[i]=='.')
            {
                if(b||c)
                    return false;
                b=true;
            }
            else if(str[i]<'0'||str[i]>'9')
                return false;
        }
        return true;
    }
}

调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

import java.util.*;
public class Solution {
    public void reOrderArray(int [] array) {
        ArrayList<Integer> a=new ArrayList();
        ArrayList<Integer> b=new ArrayList();
        for(int i=0;i<array.length;i++)
        {
            if(array[i]%2==1)
                a.add(array[i]);
            else
                b.add(array[i]);
        }
        for(int i=0;i<array.length;i++)
        {
            if(i<a.size())
                array[i]=a.get(i);
            else
                array[i]=b.get(i-a.size());
        }
    }
}