1、去除字符串兩端的空格,不能用字符串的相關函數,除了(charAt()以及getBytes()等)
JDK6中時這樣寫的:
2705 public String trim() {
2706 int len = count;
2707 int st = 0;
2708 int off = offset; /* avoid getfield opcode */
2709 char[] val = value; /* avoid getfield opcode */
2710
2711 while ((st < len) && (val[off + st] <= ' ')) {
2712 st++;
2713 }
2714 while ((st < len) && (val[off + len - 1] <= ' ')) {
2715 len--;
2716 }
2717 return ((st > 0) || (len < count)) ? substring(st, len) : this;
2718 }
但是這裏使用了substring函數。
空格的ASCII是32
這麼簡單,我寫了半天。不過題意還是有不明之處。
2、判斷線段是否相交。這個是算法的問題,想法越多,解法就越多。總之,難而);
利用矢量的叉乘爲0的條件即可:
double dx1 = x2 - x1;
float dy1 = y2 - y1;
float dx2 = x4 - x3;
float dy2 = y4 - y3;
float dd = dx1 * dy2 - dy1 * dx2; // 叉乘
bool bIntersect = !(dd > -0.000001 && dd < +0.000001);
3、int exp = ((byte)(-1))&12345;A:12345;
byte:是 8位,即1個字節。但12345是int所以,結果還是轉成int了,8位的-1轉成int還是-1,即4個字節全是1,那最終結果還是12345咯。^_^,可惜我沒做對。
4、int fun1(int i){return i<100?i:fun1(i/100)+i%100;} int exp = fun1(101010);
遞歸的問題,我很討厭它。
第一次執行後:i=1010,然後把整fun1(1010)送入棧當中。
第二次執行後:i=10,然後把fun1(10)送入棧當中。
遞歸的問題就是要按照原路返回。
好,現在開始返回了,初次返回值爲10,好與上一次的i%100=10相加結果等於20;
再次返回到fun1(1010),i%100還是10,再次相加等於30;
最終退出了哈。
A:30
其實這個遞歸都很簡單了哦,如果多重遞歸,絕對讓我當場沸騰了。
5、int exp = 0X4321>>8<<8;
A:0x4300。我的問題出在一個數當做8位了。謹記一個數佔4位。
5、靜態構造器的問題。
6、名詞解釋:MIDH、python。
7、判斷區別題,都很簡單的了哦。