hi,it's onebird‘s blog。My homepage is onebird.net.
onebird | 26 六月, 2008 14:03
不要把自己的希望当观点
不要盲从别人的观点,你盲从的人有判断力吗,有目的吗,见识高吗,比你更跟的上时代吗,有的人连出租车司机的忽悠也当真
难道你想问理发师你需要理发吗
----------------------------------------------------
另
推荐一个财经类的好网站 http://www.create.hk/
onebird | 26 六月, 2008 05:52
找出字符串中最长连续重复字符串,重复次数一样情况下,重复单元长的优先,重复单元长度一样情况下排在前面的优先,举例如下
null->null
“” -> ""
ab -> ab
aab -> a
aabbbc->b
aabbc->a
aa1212bc->12
我的代码如下,有点抽象哦
主函数入口 public string FindMostContinuouslyRepeatedString(string s)
using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using PuzzleInterface;
namespace PuzzleSolution
{
class CharPosInfo
{
public LinkedList<int> PosList;
public LinkedListNode<int> CurBegNode;
public CharPosInfo()
{
PosList = new LinkedList<int>();
CurBegNode = null; ;
}
};
class CharPosTable
{
public CharPosInfo[] table;
public int Count;
public CharPosTable(string s)
{
table = new CharPosInfo[256];
Count = s.Length;
for (int i = 0; i < 256; i++)
{
table[(char)i] = new CharPosInfo();
}
char curCh;
for (int i = 0; i < Count; i++)
{
curCh = s[i];
table[curCh].PosList.AddLast(i);
}
for (int i = 0; i < 256; i++)
{
table[(char)i].CurBegNode = table[(char)i].PosList.First;
}
}
public void SetRepeat(string s, ref Repeat rp,int begPos)
{
int startPos; int posOver,posStart;
char ch; int v;
LinkedListNode<int> node;
LinkedListNode<int> rmNode;
for (int k = 0; k < rp.ItemLen; k++)
{
startPos = rp.PosInSrc + k;
ch = s[startPos];
CharPosInfo cpInfo = table[ch];
LinkedList<int> tList = cpInfo.PosList;
node = cpInfo.CurBegNode.Next.Next;
posOver = (startPos) + rp.ItemLen * (rp.Times - 1);
posStart=startPos + rp.ItemLen;
while (node != null)
{
v = node.Value;
if (v >= posOver)
{
break;
}
{
if ( v<= begPos )
{
cpInfo.CurBegNode = node;
}
if (v <= posStart)
{
node = node.Next;
continue;
}
rmNode = node;
node = node.Next;
tList.Remove(rmNode);
}
};
}
}
public int FindNextCharPos(char c, ref LinkedListNode<int> cNode, int curPos ,int leastPos)
{
while (true)
{
if (cNode.Next != null)
{
if (cNode.Next.Value <= curPos)
{
cNode = cNode.Next;
continue;
}
if (curPos >leastPos)
{
return -2;
}
return cNode.Next.Value;
}
else
{
cNode = cNode.Next;
return -1;
}
}
}
}
public struct Repeat
{
public int Times;
public int ItemLen;
public int PosInSrc;
public void Clear(){
Times = 0;
ItemLen = 0;
PosInSrc = -1;
}
}
public class Solution : IPatternRepetition
{
public static bool StrEqual(string sA, int oA, string sB, int oB, int len)
{
for (int i=0; i < len; i++)
{
if (sA[oA + i] != sB[oB + i])
{
return false;
}
}
return true;
}
public static void GetRepeat(string s ,int sOffset, int nextOffset,ref Repeat rp)
{
// Repeat rp = new Repeat();
rp.Times = 1;
rp.ItemLen = nextOffset - sOffset;
rp.PosInSrc = sOffset;
int slen = s.Length;
int step = nextOffset;
int stepOver =slen -rp.ItemLen;
while (step <= stepOver)
{
if (StrEqual(s, sOffset, s, step, rp.ItemLen))
{
rp.Times++;
step += rp.ItemLen;
}
else
{
break;
}
}
}
public string FindMostContinuouslyRepeatedString(string s)
{
if (s == null ) return s;
CharPosTable posTable = new CharPosTable(s);
int slen = s.Length;
if (slen < 2) return s;
Repeat maxRepeat = new Repeat();
maxRepeat.ItemLen = 1; maxRepeat.PosInSrc = 0; maxRepeat.Times = 1;
char ch;
Repeat rp = new Repeat();
LinkedListNode<int> cNode;
for (int i=0; i < slen; i++)
{
ch = s[i];
int curPos = i;
cNode = posTable.table[ch].CurBegNode;
while (cNode!=null)
{
curPos = posTable.FindNextCharPos(ch, ref cNode, curPos,
((slen - i) / maxRepeat.Times + i));
if (curPos == -2) {
break;
}
rp.Clear();
if (curPos == -1)
{
rp.Times=1;
rp.ItemLen = s.Length - i;
rp.PosInSrc = i;
}
else
{
GetRepeat(s, i, curPos, ref rp);
}
if(rp.Times>2) posTable.SetRepeat(s, ref rp,i);
if (rp.Times > maxRepeat.Times)
{
maxRepeat = rp;
continue;
}
if ((rp.Times == maxRepeat.Times) && (rp.ItemLen > maxRepeat.ItemLen))
{
maxRepeat = rp;
}
}
}
if (maxRepeat.PosInSrc >= 0)
{ // System.Console.WriteLine("Real:"+maxRepeat.Times + " " + s.Substring(maxRepeat.PosInSrc, maxRepeat.ItemLen /* maxRepeat.Times*/));
return s.Substring(maxRepeat.PosInSrc, maxRepeat.ItemLen /* maxRepeat.Times*/);
}
return null;
}
}
}
公司内部的Puzzle活动,我提交的代码(原代码速度第二,这个是事后修改了一点,比第一快乐一点)
onebird | 22 六月, 2008 00:00
这一期的三联生活周刊介绍说很火 中国工程师去参加苹果公司开发者大会的已经达100多了 有不少挺赚钱的
有没有朋友了解或者感兴趣的 我们可以看看能否做什么东西有机会赚钱
http://developer.apple.com/iphone/
onebird | 20 六月, 2008 16:12
zz http://logicwin.blog.sohu.com/71800276.html
你的下属即将跳槽的8个征兆
在目下人才竞争愈演愈烈的情况下,保留人才是每个经理人和人力资源工作者的重要职责。
如果一个对公司或部门很关键的人把辞职报告摆到你的办公桌上,你才意识到他的重要性,那已经为时太晚。
通常,一个人做出辞职的决定是要经过长时间的深思熟虑、考察和论证,一旦提交辞呈,意味着他已经与另一家公司签了Offer,这时一般人不会因为公司的挽留而动心,因为他与另一家公司已经有了契约关系。
其实一个人离开公司前的1-3个月(对于经理人可能会长达6个月)里,一定会表现出不同以往的言语或行为,如果你仔细观察,就可以发现异常动向,提前采取稳定人和留人的措施。
1、对工作的积极性和主动性突然下降(No proactiveness and initiative)。
一个一贯积极主动的人,突然变得消极被动,对什么事情都无所谓,这是很危险的信号。当一个人决定离开的时候,已经是‘人在曹营心在汉’,因此出于职业道德的约束,会继续做好已经启动的工作,但不会做任何需要长期的承诺的事情。
2、对公司的态度骤然变化(Attitude toward the company changes)。
原来对公司牢骚满腹、意见多多,突然变得沉默寡言,别人议论公司也不参与。当一个人对公司有抱怨有意见的时候,他暂时不会离开,因为他还对公司抱有希望,希望有所改善。但是当他已经决定离开了,他对公司的改善也就不抱希望,或者是无所谓了。
3、表现低调(Appear invisible and indifferent)。
在各种场合,表现得比过去低调,开会不发言、讨论不讲话、有任务不主动请缨、有矛盾不卷入。为了淡出公司,他不会再主动请缨担当任何新的项目,也不会启动长期的工作项目。
4、工作纪律散漫(Become loose)。
并非所有人会这样。但在低级岗位的员工中会见到。一个一贯遵守工作纪律的人,突然出现一些迟到、早退、上班聊
天、上网等小毛病。既然要走了,在这个公司的表现就不那么重要了。但是,职业化的经理人往往能做到善始善终,原因一是职业素养使然,二是对于经理人,可能
会有背景调查(Reference
Check),会影响他能否拿到下一家公司的聘书(Offer)。
5、休长假(Take long paid leave)。
申请休息一两个星期以上的假期。外企由于工作紧张,很少有能够休息10天半个月而工作不受影响的情况。如果一
个岗位可以空缺那么长时间,老板就要质问(Challenge),公司是否需要这个岗位?但是对于要走的人,一方面为了个人的跳槽,如到外地考察、准备和
参加面试等,另外因担心个人的带薪假可能在离开时得不到公司补偿,因此会长时间休息。
6、经常离开办公室接打手机(Receive mysterious phone calls)。
跟对方公司的人事部或猎头通常是通过手机联系,接到这样的电话,该员工会神秘地快速离开办公室,走到僻静的场所接听。一般是安排面试、参观公司等事项。
7、到HR询问有关年终奖金和休假的政策(Check HR policy regarding year-end bonus)。
各公司对于年终奖和带薪假有不同规定。例如有的公司规定,发放奖金时已经离职的人无权获得奖金;遗留未用的带薪假以工资补偿;而另一些公司则规定,凡是工作到上年度12月31日的人,来年2-3月发奖时,仍有资格享受年终奖。
8、作退出的准备(Prepared to leave)。
有职业道德的人,为了降低自己离职对现雇主的不利影响,会开始辅导自己的属下,把工作移交给称职的部下,把自 己从各种长期课题和项目中脱离出来,以便能毫无牵挂地离开。否则,现公司可以以项目未完成为由而拖延他的离开。如果不顾一切地逃脱,给现公司造成损失,会 损害自己在业内的名誉。
onebird | 14 六月, 2008 14:16
流水账我就不记了。
Google和开发者走的比较近也比较开放,这一点从google中国黑板报和微软亚洲研究院官方博客的风格可以看出来。
今天主要三个主题:
App Engine 云计算
地图
手机Android
OpenSocial
云计算没听,现在好像还用不着。
地图API 设计的比较好 不过接口功能不够强大,最关键的地名到坐标的问题,经纬度飘移等关键问题没有什么帮助。大部分还是看文档就能掌握的(其实还是hack mabar或者51ditu好)
OpenSocal 是一个SNS接口标准和实现shindig 方便实现平台无关应用
手机听不太懂
期间还听了Adwords(可以自己做一些google广告管理分析工具)和Picassa API,这个可以在web开发上用到。
主要感想:
网络应用的互操作性加强了,其实可以让很多程序开发各种工具赚点小钱,也就是所谓的mushup或者轻量级应用的开发。不过这些和技术本质没有什么关系。更多是业界规范的发展。
欢迎大家有好的想法,我们一起来开发。
onebird | 12 六月, 2008 00:59
发起于 11 小时前|29 人参与
| 图书馆的书籍 | 12% (7 人) | |
| 衣服、及其装饰品 | 16% (9 人) | |
| 钱包和各种银行卡、饭卡 | 29% (17 人) | |
| 电子类产品、包括电脑和剃须刀 | 9% (5 人) | |
| 自己的被子和褥子 | 9% (5 人) | |
| 其他 | 26% (15 人) |
我从小学到大学都是全班最会丢东西的人。而且从来没捡过东西(我会交公的)。
很郁闷。
不过工作之后就好了
-------------------------
投票这个功能很好
其实投票是一种问卷。
在微软(在很多使用sharepoint的公司)经常很快的会使用sharepoint做一个投票(问卷)。几乎任何一个服务部门的一项服务都会有花费10秒到1分钟的在线问卷。
从你接到offer的那一刻开始出现招聘质量问卷,装机IT服务问卷,Training问卷,windows中文版桌面图片投票,娱乐设施投票,。。。。。
似乎美国好像还有一个专门做问卷的。
问卷代表一种民主精神和科学态度。(我在忽悠)
呵呵忽悠一点。
-----------------批判的分割线----------------------------
买卖好友真无聊
相似度测试好(其实也是问卷),不过不太好用
感觉功能有点多按钮不好找了。
onebird | 12 六月, 2008 00:53
每周都有2,3个真实的朋友增加。今天一个出国的小妹妹也增加了(上次见她还是初中)
QQ就没这个效果,除非交换QQ号码(很久没告诉人QQ号码了)
不过MSN还是经常有人加(可能和名片 工作有关) 。
其实SNS对社会还是有贡献的 很多信息在朋友之间需要分享 。目前都是写邮件,博客和msn昵称分享。
不过封闭的一定社区是出路吗,email开放的特点目前还是用的最广的联系方式。
onebird | 11 六月, 2008 00:45
onebird | 09 六月, 2008 10:09
有多少建筑蕴含风险浪费成本
有多少书是言之无物耽误人的时间
有多少化妆品营养品毫无节制地夸大功效
有多少公司利润来路不当,不为社会贡献价值
忽悠和价值贡献活动的比例 就是泡沫程度的大小。
细心观察忽悠真是无处不在。个人,组织,政府,大家,自我,你我。
onebird | 09 六月, 2008 01:14
福建 龙岩 永定 南开 酷讯 微软 搜索 广告 推荐 IM 网络应用 技术研发,工程管理 音乐 旅游 IPhone
| « | 六月 2008 | » | ||||
|---|---|---|---|---|---|---|
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | ||||||