first

来源:互联网 发布:尘埃3 mac g29设置 编辑:程序博客网 时间:2024/06/15 17:02

1.题目描述

请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。

给定一个string iniString,请返回一个bool,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000

测试样例:

"aeiou"

返回:True

"BarackObama"

返回:False

import java.util.*;

public class Different {

   public boolean checkDifferent(String iniString) {

       

       boolean[] charset = new boolean[65536];

       for(int i = 0;i < iniString.length(); i++){

           int val = iniString.charAt(i);

           if(charset[val]){

                return false;

           }

           charset[val] = true;

       }

       return true;

    }

}

 

2.利用PL/SQL语句将"数据库原理"课程的学分赋值给变量的语句是(C)

A.        select xuefen into @xuefen from coursewhere cname='数据库原理'

B.        select xuefen from course  where cname='数据库原理' andxuefen=@xuefen

C.        select @xuefen=xuefen from course  where cname='数据库原理'

D.        select xuefen=@xuefen from course where cname='数据库原理'

3.如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如:
{1, 2,1}, {15, 78, 78, 15} , {112}
是回文序列
{1, 2,2}, {15, 78, 87, 51} ,{112, 2, 11}
不是回文序列。
现在给出一个数字序列,允许使用一种转换操作:
选择任意两个相邻的数,然后从序列移除这两个数,并用这两个数字的和插入到这两个数之前的位置(只插入一个和)
现在对于所给序列要求出最少需要多少次操作可以将其变成回文序列。

输入描述:
输入为两行,第一行为序列长度n ( 1 ≤ n ≤ 50)
第二行为序列中的n个整数item[i]  (1 ≤ iteam[i] ≤ 1000),以空格分隔。
输出描述:
输出一个数,表示最少需要的转换次数



输入例子:
4
1 1 1 3



输出例子:
2

package bhw;

 

importjava.util.ArrayList;

importjava.util.Scanner;

 

/*

特点:

 1.判断是否是回文:首尾数字相等,首++,尾--,循环。

 2.操作:要求最少操作次数,那么当首数小于尾数时,应当对首数进行操作;当首数大于尾数时,应当对尾数进行操作;当相等的时候,首++,尾--,进行循环。

*/

public class Main {

    public static void main(String[] args) {

        // 输入:

        Scanner in = new Scanner(System.in);

        int n = in.nextInt();

        ArrayList<Integer> numbers = new ArrayList<Integer>();

        int count = 0;

        while (in.hasNextInt()) {

            numbers.add(in.nextInt());

            count++;

            if (count == n) {

                break;

            }

        }

        System.out.println(operation(numbers));

        in.close();

    }

 

    // 判断是否是回文

    public static boolean isHuiWen(ArrayList<Integer>al) {

        for (int i = 0, j = al.size() - 1; i < j; i++,j--) {

            if (!al.get(i).equals(al.get(j))) {

                returnfalse;

            }

        }

        return true;

    }

 

    public static int COUNT = 0;

 

    // 操作

    public static int operation(ArrayList<Integer>al) {

        if (isHuiWen(al)) {

            returnCOUNT;

        }

 

        // 转换操作

        for (int i = 0, j = al.size() - 1; i < j; i++,j--) {

            if (al.get(i) < al.get(j)) {

                int newNum = al.get(i) + al.get(i + 1);

                al.set(i + 1, newNum);

                al.remove(i);

                break;

            } else if (al.get(i) > al.get(j)) {

                int newNum = al.get(j) + al.get(j - 1);

                al.set(j - 1, newNum);

                al.remove(j);

                break;

            } else {

                continue;

            }

        }

        // 转换一次,COUNT++

        COUNT++;

        returnoperation(al);

    }

}

0 0