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、判断区别题,都很简单的了哦。