思路:模擬加法的進製操作,從後遍歷兩個陣列,設定用於兩個當前陣列位置的標誌位。為了這樣遍歷,需要使用較長的那個字串,作為for迴圈的最大值。當兩個數字長度一致時,可能進製也可能不進製,要分情況討論。
下面是實現**:
@test
public
void
bigaddtest()
/** * 乙個較長的數字加乙個較短的數字
* @param s1
* @param s2
*/private
void
bigadd
(string s1,string s2)
string temstr=s1;
if(s1.
length()
length()
) stringbuilder sb=
newstringbuilder()
;int len1=s1.
length()
-1;int len2=s2.
length()
-1;int extraadd=0;
//記錄進製
for(
int i=len1;i>=-1
;i--
)int num2=0;
if(i-
(len1-len2)
>=0)
int tmpsum=num1+num2+extraadd;
//計算本次的和
if(i==-1
)break;}
extraadd=tmpsum/10;
//計算進製大小
sb.(tmpsum%10)
;}system.out.
println
(sb.
reverse()
.tostring()
);//最後需要把數字逆序一下
}/**
* 檢查是不是數字
* @param str
* @return
*/private
boolean
checkisnumstr
(string str)
else
if(str.
length()
>
1&&str.
charat(0
)=='0')
else}}
return
true
;}
演算法複雜度為o(n). params引數使用實現任意長的引數
基本實現計算總數 static void main string args test 張三 n console.readkey public static void test string name,int score console.writeline 同學考試總成績為分 name,sum 不宣告...
Bresenham演算法實現任意斜率直線繪製
參考 計算機圖形學 donald.hearn 書中給出了斜率k在0 1之間的推導過程 在k 1時以y方向為單位步長遞增,此時有x y b b d low x x k y k 1 b m x k d upper x k 1 x x k 1 y k 1 b m p k dx d low d upper ...
Python筆記 排序演算法實現(1)
排序是資料結構中常用的方法,現用python實現起泡排序和選擇排序。將被排序的記錄陣列r 1.n 垂直排列,每個記錄r i 看作是重量為r i key的氣泡。根據輕氣泡不能在重氣泡之下的原則,從下往上掃瞄陣列r 凡掃瞄到違反本原則的輕氣泡,就使其向上 飄浮 如此反覆進行,直到最後任何兩個氣泡都是輕者...