華為OJ初級1-10

1. 字符串最后一個單詞的長度

計算字符串最后一個單詞的長度鸽疾,單詞以空格隔開。
知識點 字符串,循環(huán)
運行時間限制 0M
內(nèi)存限制 0
輸入
一行字符串,長度小于128。
輸出
整數(shù)N犀暑,最后一個單詞的長度。
樣例輸入 hello world
樣例輸出 5

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextLine()){
            String tmpStr =  sc.nextLine();
            String[] arr = tmpStr.split(" ");
            System.out.println(arr[arr.length - 1].length());
        }
        sc.close();
    }
}

2.合唱隊

計算最少出列多少位同學烁兰,使得剩下的同學排成合唱隊形
說明:
N位同學站成一排耐亏,音樂老師要請其中的(N-K)位同學出列,使得剩下的K位同學排成合唱隊形沪斟。
合唱隊形是指這樣的一種隊形:設K位同學從左到右依次編號為1广辰,2…,K主之,他們的身高分別為T1择吊,T2,…槽奕,TK干发, 則他們的身高滿足存在i(1<=i<=K)使得Ti<T2<......<Ti-1<Ti>Ti+1>......>TK。
你的任務是史翘,已知所有N位同學的身高枉长,計算最少需要幾位同學出列,可以使得剩下的同學排成合唱隊形琼讽。
知識點 循環(huán)
運行時間限制 0M
內(nèi)存限制 0
輸入
整數(shù)N
一行整數(shù)必峰,空格隔開,N位同學身高
輸出
最少需要幾位同學出列
樣例輸入 8 186 186 150 200 160 130 197 200
樣例輸出 4

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            int[] arr = new int[n];
            for(int i = 0;i < n;i++){
                arr[i] = sc.nextInt();
            }
            
            int[] inc = new int[n];
            inc[0] = 1;
            for(int i = 1;i < n;i ++){
                inc[i] = 1;
                for(int j = 0;j < i;j ++){
                    if(arr[j] < arr[i] && inc[j] + 1 > inc[i]){
                        inc[i] = inc[j] + 1;
                    }
                }
            }
            
            int[] des = new int[n];
            des[n - 1] = 1;
            for(int i = n -2;i >=0;i --){
                des[i] = 1;
                for(int j = n - 1;j > i;j --){
                    if(arr[j] < arr[i] && des[j] + 1 > des[i]){
                        des[i] = des[j] + 1;
                    }
                }
            }
            
            int max = 0;
            for(int i = 0;i < n;i ++){
                if(inc[i] + des[i] - 1> max){
                    max = inc[i] + des[i] - 1;
                }
            }
            
            System.out.println(n - max);
        }
        sc.close();
    }
}

3.圖片整理

Lily上課時使用字母數(shù)字圖片教小朋友們學習英語單詞钻蹬,每次都需要把這些圖片按照大泻鹨稀(ASCII碼值從小到大)排列收好。請大家給Lily幫忙问欠,通過C語言解決肝匆。
知識點 字符串
運行時間限制 0M
內(nèi)存限制 0
輸入
Lily使用的圖片包括"A"到"Z"、"a"到"z"顺献、"0"到"9"旗国。輸入字母或數(shù)字個數(shù)不超過1024。
輸出
Lily的所有圖片按照從小到大的順序輸出
樣例輸入 Ihave1nose2hands10fingers
樣例輸出 0112Iaadeeefghhinnnorsssv

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextLine()){
            String str =  sc.nextLine();
            char[] chs = str.toCharArray();
            Arrays.sort(chs);
            System.out.println(chs);
        }
        sc.close();
    }
}

4.名字的漂亮度

給出一個名字注整,該名字有26個字符串組成能曾,定義這個字符串的“漂亮度”是其所有字母“漂亮度”的總和度硝。
每個字母都有一個“漂亮度”,范圍在1到26之間寿冕。沒有任何兩個字母擁有相同的“漂亮度”蕊程。字母忽略大小寫。
給出多個名字驼唱,計算每個名字最大可能的“漂亮度”藻茂。
知識點 字符串
運行時間限制 0M
內(nèi)存限制 0
輸入
整數(shù)N,后續(xù)N個名字
N個字符串玫恳,每個表示一個名字
輸出
每個名稱可能的最大漂亮程度
樣例輸入 2 zhangsan lisi
樣例輸出 192 101

import java.util.Scanner;
import java.util.Arrays;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextInt()){
            int cnt = Integer.parseInt(sc.nextLine());
            int[] nums = new int[cnt];
            for(int j= 0;j < cnt;j++){
            String str = sc.nextLine().toUpperCase();
            int[] ints = new int[26];
            for(int i = 0;i < str.length();i++){
                ints[str.charAt(i) - 'A'] ++;
            }
            Arrays.sort(ints);
            int result = 0;
            for(int i = 0;i < 26;i++)
                result += (i+1)*ints[i];
            nums[j] = result;
            }
            for(int i = 0;i < cnt;i++)
                System.out.println(nums[i]);
        }
        sc.close();
    }
}

5.(練習用)挑7

輸出7有關(guān)數(shù)字的個數(shù)捌治,包括7的倍數(shù),還有包含7的數(shù)字(如17纽窟,27肖油,37...70,71臂港,72森枪,73...)的個數(shù)
知識點 循環(huán)
運行時間限制 0M
內(nèi)存限制 0
輸入
一個正整數(shù)N。(N不大于30000)
輸出
不大于N的與7有關(guān)的數(shù)字個數(shù)审孽,例如輸入20县袱,與7有關(guān)的數(shù)字包括7,14,17.
樣例輸入 20
樣例輸出 3

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int N = sc.nextInt();
            int sum = 0;
            for(int i = 1;i <= N;i ++){
                if(i % 7 == 0 || String.valueOf(i).toString().contains("7")) {
                    sum ++;
                }
            }
            System.out.println(sum);
        }
        sc.close();
    }
}

6.字符串加解密

題目描述
1、對輸入的字符串進行加解密佑力,并輸出式散。
2加密方法為:
當內(nèi)容是英文字母時則用該英文字母的后一個字母替換,同時字母變換大小寫,如字母a時則替換為B打颤;字母Z時則替換為a暴拄;
當內(nèi)容是數(shù)字時則把該數(shù)字加1,如0替換1编饺,1替換2乖篷,9替換0;
其他字符不做變化透且。
3撕蔼、解密方法為加密的逆過程。
接口描述:
實現(xiàn)接口秽誊,每個接口實現(xiàn)1個基本操作:
void Encrypt (char aucPassword[], char aucResult[]):在該函數(shù)中實現(xiàn)字符串加密并輸出
說明:
1鲸沮、字符串以\0結(jié)尾。
2锅论、字符串最長100個字符讼溺。
int unEncrypt (char result[], char password[]):在該函數(shù)中實現(xiàn)字符串解密并輸出
說明:
1、字符串以\0結(jié)尾棍厌。
2肾胯、字符串最長100個字符。
知識點 字符串
運行時間限制 10M
內(nèi)存限制 128
輸入
輸入說明
輸入一串要加密的密碼
輸入一串加過密的密碼
輸出
輸出說明
輸出加密后的字符
輸出解密后的字符
樣例輸入 abcdefg BCDEFGH
樣例輸出 BCDEFGH abcdefg

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String str1 = sc.next();
            String str2 = sc.next();

            char aucPassword[] = str1.toCharArray();
            char aucResult[] = new char[aucPassword.length];
            Encrypt(aucPassword, aucResult);
            System.out.println(aucResult);

            char result[] = str2.toCharArray();
            char password[] = new char[result.length];
            unEncrypt(result, password);
            System.out.println(password);
        }
        sc.close();

    }

    public static void Encrypt(char aucPassword[], char aucResult[]) {
        for (int i = 0; i < aucPassword.length; i++) {
            char c = aucPassword[i];
            if (c >= 'a' & c <= 'z') {
                aucResult[i] = (char) ((c + 1 - 'a') % 26 + 'A');
            }
            if (c >= 'A' & c <= 'Z') {
                aucResult[i] = (char) ((c + 1 - 'A') % 26 + 'a');
            }
            if (c >= '0' & c <= '9') {
                aucResult[i] = (char) ((c + 1 - '0') % 10 + '0');
            }
        }
    }

    public static int unEncrypt(char result[], char password[]) {
        for (int i = 0; i < result.length; i++) {
            char c = result[i];
            if (c >= 'a' & c <= 'z') {
                password[i] = (char) ((26 + c - 1 - 'a') % 26 + 'A');
            }
            if (c >= 'A' & c <= 'Z') {
                password[i] = (char) ((26 + c - 1 - 'A') % 26 + 'a');
            }
            if (c >= '0' & c <= '9') {
                password[i] = (char) ((10 + c - 1 - '0') % 10 + '0');
            }
        }
        return 0;
    }
}

7.蛇形矩陣

蛇形矩陣是由1開始的自然數(shù)依次排列成的一個矩陣上三角形耘纱。
樣例輸入
5
樣例輸出
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
接口說明
原型
void GetResult(int Num, char * pResult);
輸入?yún)?shù):
int Num:輸入的正整數(shù)N
輸出參數(shù):
int * pResult:指向存放蛇形矩陣的字符串指針
指針指向的內(nèi)存區(qū)域保證有效
返回值:
void
知識點 數(shù)組
運行時間限制 10M
內(nèi)存限制 128
輸入
輸入正整數(shù)N(N不大于100)
輸出
輸出一個N行的蛇形矩陣敬肚。
樣例輸入 4
樣例輸出 1 3 6 10 2 5 9 4 8 7

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            int sum = n * (n + 1) / 2;
            int rowStart = 1;
            for (int i = 1; i <= n; i++) {
                rowStart = 1 + i * (i - 1) / 2;
                System.out.print(rowStart);
                int tmp = 1 + i;
                rowStart += tmp;
                while (rowStart <= sum) {
                    System.out.print(" " + rowStart);
                    tmp++;
                    rowStart += tmp;
                }
                System.out.println();
            }
        }
    }
}

8.字符串加密

有一種技巧可以對數(shù)據(jù)進行加密,它使用一個單詞作為它的密匙束析。下面是它的工作原理:首先艳馒,選擇一個單詞作為密匙,如TRAILBLAZERS员寇。如果單詞中包含有重復的字母弄慰,只保留第1個,其余幾個丟棄〉妫現(xiàn)在陆爽,修改過的那個單詞死于字母表的下面,如下所示:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
T R A I L B Z E S C D F G H J K M N O P Q U V W X Y
上面其他用字母表中剩余的字母填充完整扳缕。在對信息進行加密時慌闭,信息中的每個字母被固定于頂上那行,并用下面那行的對應字母一一取代原文的字母(字母字符的大小寫狀態(tài)應該保留)躯舔。因此驴剔,使用這個密匙,Attack AT DAWN(黎明時攻擊)就會被加密為Tpptad TP ITVH粥庄。
請實現(xiàn)下述接口丧失,通過指定的密匙和明文得到密文。
詳細描述:
接口說明
原型:
voidencrypt(char * key,char * data,char * encrypt);
輸入?yún)?shù):
char * key:密匙
char * data:明文
輸出參數(shù):
char * encrypt:密文
返回值:
void
知識點 字符串
運行時間限制 10M
內(nèi)存限制 128
輸入
先輸入key和要加密的字符串
輸出
返回加密后的字符串
樣例輸入 nihao ni
樣例輸出 le

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            String key = sc.nextLine();
            String data = sc.nextLine();
            char[] result = encrypt(key, data);
            System.out.println(result);
        }
    }

    public static char[] encrypt(String key, String data) {
        key = key.toUpperCase();
        String keyDic = "";
        for (int i = 0; i < key.length(); i++) {
            char c = key.charAt(i);
            if (!keyDic.contains(String.valueOf(c)))
                keyDic += c;
        }
        for (int i = 0; i < 26; i++) {
            char c = (char) ('A' + i);
            if (!keyDic.contains(String.valueOf(c)))
                keyDic += c;
        }
        char[] result = data.toCharArray();
        for (int i = 0; i < data.length(); i++) {
            char c = data.charAt(i);
            if (c >= 'A' && c <= 'Z')
                result[i] = (char) (keyDic.charAt(c - 'A'));
            if (c >= 'a' && c <= 'z')
                result[i] = (char) (keyDic.charAt(c - 'a') - 'A' + 'a');
        }
        return result;
    }
}

9. 公共字串計算

題目標題:
計算兩個字符串的最大公共字串的長度惜互,字符不區(qū)分大小寫
詳細描述:
接口說明
原型:
int getCommonStrLength(char * pFirstStr, char * pSecondStr);
輸入?yún)?shù):
char * pFirstStr //第一個字符串
char * pSecondStr//第二個字符串
知識點 字符串,查找
運行時間限制 10M
內(nèi)存限制 128
輸入
輸入兩個字符串
輸出
輸出一個整數(shù)
樣例輸入 asdfas werasdfaswer
樣例輸出 6

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String str1 = sc.next();
            String str2 = sc.next();
            int len = str1.length();
            int result = 0;
            for (int i = 0; i < len; i++) {
                for (int j = 0; j <= i; j++) {
                    String subStr = str1.substring(j, j + len - i);
                    if (str2.contains(subStr)) {
                        result = len - i;
                        break;
                    }
                }
                if (result > 0)
                    break;
            }
            System.out.println(result);
        }
        sc.close();
    }
}

10. 多線程

問題描述:有4個線程和1個公共的字符數(shù)組布讹。線程1的功能就是向數(shù)組輸出A,線程2的功能就是向字符輸出B训堆,線程3的功能就是向數(shù)組輸出C炒事,線程4的功能就是向數(shù)組輸出D。要求按順序向數(shù)組賦值ABCDABCDABCD蔫慧,ABCD的個數(shù)由線程函數(shù)1的參數(shù)指定挠乳。[注:C語言選手可使用WINDOWS SDK庫函數(shù)]
接口說明:
void init(); //初始化函數(shù)
void Release(); //資源釋放函數(shù)
unsignedint__stdcall ThreadFun1(PVOID pM) ; //線程函數(shù)1,傳入一個int類型的指針[取值范圍:1 – 250姑躲,測試用例保證]睡扬,用于初始化輸出A次數(shù),資源需要線程釋放
unsignedint__stdcall ThreadFun2(PVOID pM) ;//線程函數(shù)2黍析,無參數(shù)傳入
unsignedint__stdcall ThreadFun3(PVOID pM) ;//線程函數(shù)3卖怜,無參數(shù)傳入
Unsigned int __stdcall ThreadFunc4(PVOID pM);//線程函數(shù)4,無參數(shù)傳入
char g_write[1032]; //線程1,2,3,4按順序向該數(shù)組賦值阐枣。不用考慮數(shù)組是否越界马靠,測試用例保證
知識點 字符串,循環(huán),鏈表,隊列,棧,查找,搜索,排序,樹,圖,數(shù)組,函數(shù),指針,枚舉,位運算,結(jié)構(gòu)體,聯(lián)合體,文件操作,遞歸
運行時間限制 10M
內(nèi)存限制 128
輸入
輸入一個int整數(shù)
輸出
輸出多個ABCD
樣例輸入 10
樣例輸出 ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD

import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws InterruptedException {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            long start = System.currentTimeMillis();
            int n = sc.nextInt();
            for (int i = 0; i < n; i++) {
                // System.out.print("ABCD");
                for (int j = 0; j < 4; j++) {
                    Thread t = new MyThread((char) ('A' + j));
                    t.start();
                    t.join();
                }
            }
            System.out.println();
            long end = System.currentTimeMillis();
            System.out.println(end - start);
        }
    }
}

class MyThread extends Thread {
    private char c;

    public MyThread(char c) {
        this.c = c;
    }

    @Override
    public void run() {
        System.out.print(c);
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奄抽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子甩鳄,更是在濱河造成了極大的恐慌逞度,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妙啃,死亡現(xiàn)場離奇詭異档泽,居然都是意外死亡,警方通過查閱死者的電腦和手機揖赴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門馆匿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人燥滑,你說我怎么就攤上這事渐北。” “怎么了铭拧?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵腔稀,是天一觀的道長。 經(jīng)常有香客問我羽历,道長焊虏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任秕磷,我火速辦了婚禮诵闭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘澎嚣。我一直安慰自己疏尿,他們只是感情好,可當我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布易桃。 她就那樣靜靜地躺著褥琐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪晤郑。 梳的紋絲不亂的頭發(fā)上敌呈,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天,我揣著相機與錄音造寝,去河邊找鬼磕洪。 笑死,一個胖子當著我的面吹牛诫龙,可吹牛的內(nèi)容都是我干的析显。 我是一名探鬼主播,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼签赃,長吁一口氣:“原來是場噩夢啊……” “哼谷异!你這毒婦竟也來了分尸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤歹嘹,失蹤者是張志新(化名)和其女友劉穎箩绍,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荞下,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡伶选,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年史飞,在試婚紗的時候發(fā)現(xiàn)自己被綠了尖昏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡构资,死狀恐怖抽诉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吐绵,我是刑警寧澤迹淌,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站己单,受9級特大地震影響唉窃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纹笼,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一纹份、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧廷痘,春花似錦蔓涧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至兄猩,卻和暖如春茉盏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背枢冤。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工援岩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人掏导。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓享怀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親趟咆。 傳聞我的和親對象是個殘疾皇子添瓷,可洞房花燭夜當晚...
    茶點故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎部分 基礎部分的順序:基本語法梅屉,類相關(guān)的語法,內(nèi)部類的語法鳞贷,繼承相關(guān)的語法坯汤,異常的語法,線程的語...
    子非魚_t_閱讀 31,668評論 18 399
  • __block和__weak修飾符的區(qū)別其實是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用搀愧,...
    LZM輪回閱讀 3,333評論 0 6
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理惰聂,服務發(fā)現(xiàn),斷路器咱筛,智...
    卡卡羅2017閱讀 134,719評論 18 139
  • 【麗平悟生活】 2017.6.17 雨夜 今天盡管下著雨迅箩,但因為參與了一個特別的活動遇到特別的人溉愁,寧靜的夜內(nèi)心格外...
    麗平悟生活閱讀 725評論 0 1
  • 六月的歌聲是嘹亮的,六月的歌舞是美妙的饲趋,經(jīng)過大班全體師生前期的精心準備拐揭,2016年6月30日永安鎮(zhèn)惠魯社...
    趙娟123閱讀 277評論 0 0