北京点控云面试题
1) 给定两个字符串,如果一个字符串是另一个字符串的结尾部分相同则返回1,否则返回0, 如 abcddde  dde  则返回1 ;如 abcddde  dce  则返回0
思路:用String类中的endsWith判断一下即可搞定。
2)  给定一个字符串将其中连续的四个空格换成tab键。
思路:用String中的replaceAll替换空格为tab
3)  F(n)=1+1/1的阶乘+1/2的阶乘+1/3的阶乘+…..1/n的阶乘。
思路:
  //求出1/n的阶乘
  public static double oneJiecheng(int n)
{
    double d = 1.0;
    for(int i = 0; i < n;i++)
    {
      d *= 1.0/(i+1);
    }
    return d;
}
//将各个1/n的阶乘相加即可
public static double jiechengSunfa(int n)
{
    double returnValue = 1.0;
    for (int i =0 ; i < n; i++)
    {
        returnValue += oneJiecheng(i+1);
    }
      return returnValue;
}
4)  任意给定一个数字数组,出其中和最大的连续子数组,如 1 2 3 -1 3 4  最大和数组 3 4。
(注)这里重点讨论一下这个题目的算法,不知道大家是否想到其他的好的算法。现在我将自己想到的这个笨算法跟大家介绍一下。
思路:a.判断数组中的数字是否全是负数,如果是,出最大的负数来,并转化成数组,即最大的连续子数组;
        b.把数组中的数字转化成字符串,判断如果改数字为负数,则用空格来分开,否则用逗号隔开,如“1,2,3,-1 3,4”;
        c.用字符串分隔处理空格,将此字符串变成一字符串数组,循环此字符串数组中的各个字符串,并递归处理数据,直到最后一个字符不能为负为止,值相加进行比较判断,出最大的值来,并记录此值对应的数值,此最大值即由最大的连续数组的值相加得来的。
实现:
        public static int getArray(int[] array,int param)
        {
            int p = param;
            if (param < 0)
              return 0;
            if(array[param] < 0)
            {string字符串转化数组
              p = param - 1;
              return getArray(array,p);
            }
            return p;
        }
        public static int[] findSubArray(int[] intArray)
      {
          //数组中全部是负数的情况
          int flag = 0;
          for(int i = 0; i < intArray.length;i++)
        {
            if(intArray[i] < 0)
            {
                flag++;
            }
        }
        if(flag == intArray.length)
        {
              int index = intArray[0];
              for(int i = 1; i < intArray.length; i++)
            {
                if(index < intArray[i])
                  {
                      index = intArray[i];
                  }
            }
            return new int[]{index};
          } 
          //其他情况
        String strTemp = "";
          for(int i = 0; i < intArray.length;i++)
          {
                if(intArray[i] < 0)
              {
                    strTemp += intArray[i] + " ";
              }
                else
              {
                    strTemp += intArray[i] + ",";
              }
          }
          if(!strTemp.equals(""))
          {
              strTemp = strTemp.substring(0, strTemp.length()-1);
          }
          String[] flagArray = strTemp.split(" ");
          int[] returnValue = new int[10];
          int paTemp = 0;
          for(int i = 0; i < flagArray.length; i++)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。