更新時(shí)間:2020-07-13 15:14:00 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1934次
給我一個(gè)字符串,例如I love java,輸出: java love I
public?class?StringReverse?{??
??????public?void?swap(char[]?arr,?int?begin,?int?end)?{??
????????while(begin?<?end)?{??
????????????char?temp?=?arr[begin];??
????????????arr[begin]?=?arr[end];??
????????????arr[end]?=?temp;??
????????????begin++;??
????????????end--;??
????????}??
????}??
????//I?love?java??
????public?String?swapWords(String?str)?{??
????????char[]?arr?=?str.toCharArray();??
????????swap(arr,?0,?arr.length?-?1);??
????????int?begin?=?0;??
????????for?(int?i?=?1;?i?<?arr.length;?i++)?{??
????????????if?(arr[i]?==?'?')?{??
????????????????swap(arr,?begin,?i?-?1);??
????????????????begin?=?i?+?1;??
????????????}??
????????}??
??swap(arr,?begin,?arr.length-1);
????????return?new?String(arr);??
????}??
??????
????public?static?void?main(String[]?args)?{??
????????String?str?=?"I?love?java";??
????????System.out.println(new?StringReverse().swapWords(str));??
????}??
?
}
輸入一個(gè)正數(shù)n,輸出所有和為n的連續(xù)正數(shù)序列。
分析:設(shè)定兩個(gè)指針,min指向和為n的連續(xù)正數(shù)序列的最小值,max指向和為n的連續(xù)正數(shù)序列最大值。sum表示真正的和。
初始情況下,min、max和sum都指向1.
當(dāng)sum小于n時(shí),max++;
當(dāng)sum大于n時(shí),min++;
當(dāng)sum等于n時(shí),輸出整個(gè)序列。
public?class?a?{
public?static?void?getAns(int?n)?{
????int?min?=?1;
????int?sum?=?1;
????int?max?=?1;
????while(min?<=?n/2+1)?{
????????if(sum?==?n)?{
????????????for(int?k?=?min;?k<=max;?k++)?{?????????
????????????System.out.println(k+"");
????????????}
????????????System.out.println();
????????????sum?=?sum?-?min;
????????????min?++;
????????????max?++;
????????????sum?=?sum+max;
????????}
????????if(sum?>?n)?{
????????????sum?=?sum?-?min;
????????????min?++;
????????}?else?{
????????????max?++;
????????????sum?=?sum?+?max;
????????}
????}
}
public?static?void?main(String[]?args)?{
????getAns(15);
}}
2.給定一個(gè)排好序的鏈表,刪除鏈表中重復(fù)的結(jié)點(diǎn),返回鏈表頭指針。
分析:(1)鏈表中重復(fù)的結(jié)點(diǎn)不需要保留一個(gè),要全部刪除。
(2)因?yàn)橄嗤慕Y(jié)點(diǎn)全部要?jiǎng)h除,所以我們?cè)O(shè)定三個(gè)指針,node指向當(dāng)前節(jié)點(diǎn),prev指向前驅(qū),還有一個(gè)指向后繼結(jié)點(diǎn)。一旦遇到node和后繼結(jié)點(diǎn)相等,就node++,知道沒有重復(fù)的再移動(dòng)prev.
(3)注意:頭結(jié)點(diǎn)也可能有重復(fù),所以也可能被刪除,所以需要定義一個(gè)root指向頭結(jié)點(diǎn)。
public?class?a?{
????//?結(jié)點(diǎn)定義,包括當(dāng)前結(jié)點(diǎn)的值和next指向
????private?static?class?ListNode?{
????????private?int?val;
????????private?ListNode?next;
?
????????public?ListNode()?{
????????}
?
????????public?ListNode(int?val)?{
????????????this.val?=?val;
????????}
?
????????public?String?toString()?{
????????????return?val?+?"";
????????}
????}
?
????//?刪除節(jié)點(diǎn)的函數(shù)
????public?static?ListNode?delete(ListNode?head)?{
????????if?(head?==?null)
????????????return?null;
????????if?(head.next?==?null)
????????????return?head;
????????//?定義一個(gè)臨時(shí)的頭結(jié)點(diǎn),因?yàn)轭^結(jié)點(diǎn)也可能被刪除
????????ListNode?root?=?new?ListNode();
????????root.next?=?head;
????????ListNode?prev?=?root;
????????ListNode?node?=?head;
?
????????while?(node?!=?null?&&?node.next?!=?null)?{
????????????if?(node.val?==?node.next.val)?{
????????????//若有連續(xù)相同的結(jié)點(diǎn),則node要一直++
??????while?(node.next?!=?null?&&?node.next.val?==?node.val)
????????????????????node?=?node.next;
????????????????prev.next?=?node.next;
????????????}?else?{
????????????????prev.next?=?node;
????????????????prev?=?prev.next;
????????????}
????????????node?=?node.next;
????????}
????????return?root.next;
????}
????//打印出來刪除后的結(jié)果
????private?static?void?print(ListNode?head)?{
????????while?(head?!=?null)?{
????????????System.out.print(head?+?"->");
????????????head?=?head.next;
????????}
????????System.out.println("null");
????}
?
????public?static?void?main(String[]?args)?{
????????//?按照結(jié)點(diǎn)的定義新建一個(gè)鏈表
????????ListNode?n1?=?new?ListNode(1);
????????ListNode?n2?=?new?ListNode(1);
????????ListNode?n3?=?new?ListNode(2);
????????ListNode?n4?=?new?ListNode(2);
????????ListNode?n5?=?new?ListNode(2);
????????ListNode?n6?=?new?ListNode(3);
????????ListNode?n7?=?new?ListNode(5);
?
????????n1.next?=?n2;
????????n2.next?=?n3;
????????n3.next?=?n4;
????????n4.next?=?n5;
????????n5.next?=?n6;
????????n6.next?=?n7;
????????n7.next?=?null;
????????//調(diào)用delete函數(shù),傳入n1的值,當(dāng)成頭結(jié)點(diǎn)
????????ListNode?result?=?delete(n1);
????????print(result);
?
????}
}
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java面向?qū)ο缶幊叹毩?xí)題及答案”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743