华为编程题:字符串排序

题目描述

编写一个程序,将输入字符串中的字符按如下规则排序。

规则1:英文字母从A到Z排列,不区分大小写。

如,输入:Type 输出:epTy

规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。

如,输入:BabA 输出:aABb

规则3:非英文字母的其它字符保持原来的位置。

如,输入:By?e 输出:Be?y

样例:

输入:

A Famous Saying: Much Ado About Nothing(2012/8).

输出:

A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).

解题

先把字母链接起来,在插入其他字符

连接字母的依据是遍历字母

import java.util.*;
public class Main{
    public static void main(String [] args){
        Scanner in = new Scanner(System.in);
        String str="";
        StringBuffer sb;
        while(in.hasNext()){
            str = in.nextLine();
            sb = new StringBuffer();
            for(int i =0;i<=25;i++){
                char ch = (char)(‘a‘ + i);
                for(int j=0;j< str.length();j++){
                    if( str.charAt(j) == ch || str.charAt(j) == ch - 32)
                        sb.append(str.charAt(j));
                }
            }
            for(int i =0;i<str.length();i++){
                char m=str.charAt(i);
                if ((m >= ‘a‘ && m <= ‘z‘) || (m >= ‘A‘ && m <= ‘Z‘)) {
                    continue;
                } else {
                    sb.insert(i, m);
                }
            }
            System.out.println(sb.toString());
        }
    }
}
时间: 2024-12-24 19:47:15

华为编程题:字符串排序的相关文章

面试编程题(排序)

排序:快排.堆排序 /*直接插入排序 *设置哨兵[0]*/ void InsertSort(int data[],int length) { for(int i = 2; i <= length; i++) { if(data[i] < data[i-1]) { data[0] = data[i]; data[i] = data[i-1]; int j; for(j= i-2; data[0] < data[j]; j--) data[j+1] = data[j]; data[j+1]

[编程题]字符串最后一个单词的长度

计算字符串最后一个单词的长度,单词以空格隔开. 输入描述: 一行字符串,非空,长度小于5000. 输出描述: 整数N,最后一个单词的长度. 输入例子: hello world 输出例子: 5 #include<stdio.h> #include<string.h> int main(){ char str[5000]; int k,i; scanf("%[^\n]",str); for(i=strlen(str)-1;i>0 ;i--){ if(str[i

[编程题] 字符串碎片 网易2018校招

一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的.例如,"aaabbaaac"是由下面碎片组成的:'aaa','bb','c'.牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的平均长度是多少. 输入描述: 输入包括一个字符串s,字符串s的长度length(1 ≤ length ≤ 50),s只含小写字母('a'-'z') 输出描述: 输出一个整数,表示所有碎片的平均长度,四舍五入保留两位小数. 如样例所示: s = "aaabbaaac" 所

[C]字符串排序之-冒泡法

在oj刷题,遇见一题字符串排序题. 脑海里瞬间闪过数组排序. 思路有了,打开题解看看别人的思路,发现好多人的排序方法显得比较臃肿,可能也是我的水平不够,欣赏不来吧. 不过用冒泡法排序的时候一定要记得字符串不可以通过值传递的方式来修改!!! 谨记strcpy大法好!!! 附上原题及代码; 题目:输入三个字符串,按由小到大的顺序输出 1 #include <stdio.h> 2 #include <string.h> 3 4 int main() 5 { 6 char ar[3][10

上机操作编程题

一.写一个简单的缓存系统 1 package com.wisezone.demo; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 /** 6 * 上机操作: 7 * 面试题--写一个简单的缓存系统 8 * @author 王东海 9 * @2017年6月5日 10 */ 11 public class CacheDemo 12 { 13 private Map<String, Object> map = new HashMap&

华为2020校招笔试编程题

刚做完华为的笔试题,简要描述一下三道编程题的解决方法以及python代码实现 第一题大致描述: 给定两个已经升序排序好的的序列A={a1,a2,a3,...an} 和B={b1,b2,b3...bn} ,一个数R,找出满足以下条件的的(ai,bj)序列对 1.ai<=bj 2.bj和ai两者的距离 满足 bj-ai<=R ,要是该条件不满足,就从序列B中找出 和ai 距离最接近R的一个点bj(同时要满足条件1) 输入样例:A={1,3,5},b={2,4,6},R=1 输出样例:(1,2)(3

求职 | 华为研发工程师编程题个人题解【C++】【Python】

华为研发工程师编程题[C++][Python][数学][数组][字符串] 问题1 有这样一道智力题:"某商店规定:三个空汽水瓶可以换一瓶汽水.小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?"答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子.然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板.如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝? 输入描述: 输入文件最多包

[编程题-华为]明明的随机数

[编程题] 明明的随机数 华为上机题喜欢考 排序+去重 的题目 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号.然后再把这些数从小到大排序,按照排好的顺序去找同学做调查.请你协助明明完成“去重”与“排序”的工作. Input Param n               输入随机数的个数 inputArray      n个随机整数组成

上海华为的一道关于指针方面的编程题(C/C++)

int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标. 尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路 注:我的方法的复杂度为O(n),大家如果有其它方法希望可以交流一下. /* author: jiangxin Blog: http://blog.csdn.net/jiangxinnju */ #include <ios