华为java 优招面试题_2017华为优招笔试题
哎,沒(méi)有接到筆試通知,不知道為啥就錯(cuò)過(guò)了。
之后見(jiàn)到題目,前兩道編程題。其實(shí)都見(jiàn)過(guò)類似的題目,有點(diǎn)思路,但是直接快速完整實(shí)現(xiàn)出來(lái),水平還是達(dá)不到。
這樣的題目,也不算難,三道編程題至少AC兩道才算可以。但是自己還是寫(xiě)代碼寫(xiě)的少,需要多練習(xí),增加熟練度。
第一道題,統(tǒng)計(jì)一個(gè)字符串中,出現(xiàn)的字母字符串,數(shù)字字符串和其他字符組成的字符串的個(gè)數(shù)。
思想非常簡(jiǎn)單直觀,但對(duì)于邊界條件以及何時(shí)將統(tǒng)計(jì)的數(shù)量進(jìn)行增加要仔細(xì)考慮。
代碼如下:
#include
#include
using namespace std;
int main()
{
string str;
getline(cin,str);
int a[3] = { 0, 0, 0 };
for (int i = 0; i < str.length()-1;){
while (((str[i] >'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z')) && i
while (((str[i] >'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z')) && i
++i;
}
a[0]++;
break;
}
while ((str[i] >='0'&& str[i] <= '9' ) && i
while ((str[i] >= '0' && str[i] <= '9') && i
++i;
}
a[1]++;
break;
}
while ((str[i] >= 0 && str[i] <= 47) || (str[i] >= 58 && str[i] <= 64) || (str[i] >= 91 && str[i] <= 96) || (str[i] >= 123) && i
while ((str[i] >= 0 && str[i] <= 47) || (str[i] >= 58 && str[i] <= 64) || (str[i] >= 91 && str[i] <= 96) || (str[i] >= 123) && i
++i;
}
a[2]++;
break;
}
}
for (int m = 0; m < 3; m++){
cout << a[m];
if (m < 2){
cout << ",";
}
}
system("pause");
return 0;
}
第二題是將字符串按照單詞逐個(gè)反轉(zhuǎn)的題目,也是常見(jiàn)題目。一般思想都是做兩次翻轉(zhuǎn)。整個(gè)字符串翻轉(zhuǎn),然后將單詞逐個(gè)翻轉(zhuǎn)。
例如:輸入 i am student????? 輸出:student am i
代碼如下:
/*
對(duì)字符串進(jìn)行逐詞翻轉(zhuǎn);
*/
#include
using namespace std;
//編程實(shí)現(xiàn)字符串中各單詞的翻轉(zhuǎn)
//方法1
void Revese(char *str){
char *start = str, *end = str, *ptr = str; //開(kāi)頭,結(jié)尾,中間指針
while (*ptr++ != '\0')
{
if (*ptr == ' ' || *ptr == '\0') //找到一個(gè)單詞
{
end = ptr - 1; //end指向單詞末尾
while (start
swap(*start++, *end--); //把單詞的字母逆置
start = end = ptr + 1; //指向下一個(gè)單詞開(kāi)頭
}
}
start = str, end = ptr - 2;//start指向字符串開(kāi)頭,end指向字符串末尾
while (start
{
swap(*start++, *end--);
}
}
int main()
{
char Str[30] = "i am from henan";
Revese(Str);
cout << Str << endl;
getchar();
return 0;
}
方法二:
#include "stdafx.h"
#include
using namespace std;
//編程實(shí)現(xiàn)字符串中各單詞的翻轉(zhuǎn)
//方法2
void Revese(char *str){
char *start=str,*end=str,*ptr=str;
while (*ptr++!='\0');
end=ptr-2; //找到字符串末尾
while (start
{
swap(*start++,*end--);//將整個(gè)字符串逆置
}
start=str;//指向字符串開(kāi)頭
end=ptr-2;//指向字符串末尾
ptr=start;//指向字符串開(kāi)頭
while (*ptr++!='\0')
{
if (*ptr==' '||*ptr=='\0') //找到一個(gè)單詞
{
end=ptr-1;//指向單詞末尾
while (start
{
swap(*start++,*end--);
}
start=end=ptr+1;//指向下一個(gè)單詞開(kāi)頭
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
char Str[30]="i am from henan";
Revese(Str);
cout<
getchar();
return 0;
}
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的华为java 优招面试题_2017华为优招笔试题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JDBC进行事务管理
- 下一篇: controller接收json数据_S