腾讯笔试编程题

来源:互联网 发布:淘宝免费充话费 编辑:程序博客网 时间:2024/05/16 01:31
//腾讯:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for(int i = 0;i<n;i++){
a[i] = sc.nextInt();
}
List<Integer> cha = new ArrayList<Integer>();
int count = 0;
for(int i = 0;i<n;i++){
for(int j = i+1;j<n;j++){
cha.add(Math.abs(a[i]-a[j]));
count++;
}
}
int max = Collections.max(cha);
int min = Collections.min(cha);
int maxcount = 0;
int mincount = 0;
for(int i = 0;i<count;i++){
if(cha.get(i) == max){
maxcount++;
} else if(cha.get(i) == min){
mincount++;
}
}
System.out.println(mincount +" " + maxcount);

}


//腾讯:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String s = sc.next();
if(s.length() >=1 && s.length()<= 1000){
for(int i = 0;i<s.length();i++){
if(s.charAt(i) >= 'a' &&s.charAt(i)<='z'){
System.out.print(s.charAt(i));
}
}
for(int j = 0;j< s.length();j++){
if(s.charAt(j) >= 'A' &&s.charAt(j)<='Z'){
System.out.print(s.charAt(j));
}
}
}
}
}


//腾讯:给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。
// 可以求原串和反串的公共子序列,总长减去其长度即为需删个数。如果两个相等,则此时最长序列是前一个加1;若不想等,就从前面挑最大的,更长的序列即可。
public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       while (sc.hasNext()) {
           String s1 = sc.next();
           String s2 = new StringBuilder(s1).reverse().toString();
           int[][] dp = new int[s1.length() + 1][s2.length() + 1];
           for (int i = 1; i < dp.length; i ++ ) {  //正序的每一个字符同反序的每一个字符比较
               for (int j = 1; j < dp[0].length; j ++ ) {
//                    dp[i][j] = s1.charAt(i - 1) == s2.charAt(j - 1) ? dp[i - 1][j - 1] + 1 : Math.max(dp[i - 1][j], dp[i][j - 1]);
               if (s1.charAt(i-1) == s2.charAt(j-1)){ //字符是相同的  则前一个字符相同的数加一
               dp[i][j] = dp[i-1][j-1] + 1;
               } else {  //对应的字符不相同  则取前面相同字符数中最大那个
               dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1]);  
               }
               }
           }
           System.out.println(s1.length() - dp[s1.length()][s2.length()]);//这样得到就是相同字符数最多的值  就是回文的长度  总长减去此长  就得到要删减的数目
       }
   }



0 0
原创粉丝点击