分析" aAAAxAAAa"字符串

http://www.oschina.net/code/snippet_192190_16605 请找出输入文件 (input.txt) 中所有符合下面条件的字符 1. 是一个小写字母, 并且, 2. 两侧各有且只有三个大写字母. 例如: aAAAxAAAa 中的 x 要求及说明: 1. 不能使用正则表达式; 2. 请尽量优化代码结构和算法性能; 3. 能适应更大规模的数据源(input.txt); 提示: 1. 输出的结果是有语义的字符串.


--------------------------------------------------------------------------------

简单地用php实现了下..

返回的结果是linkedlist

我的思路比较简单,就是9个字符9个字符地遍历,看是否符合那规则.既然人家不让用正则表达式判断.

那咱们就用判断大小写的方法咯:-)

当然如下不考虑任何效率问题..

<?php
/** 
 * @author 林少能 新浪围脖:http://weibo.com/10832126
 */

//--保存结果字符串
$res = '';

//--拼接每一行的字符串
$allStr = '';
$data = explode ( "\n", file_get_contents ( 'input.txt' ) );
if (is_array ( $data ) && count ( $data ) > 0) {
	foreach ( $data as $key => $val ) {
		$val = trim( $val );
		$allStr .= $val;
	}
	//把最前面的8个字符串接到最后面,假设是一个环组成的字符串
	$pre8Str = substr( $data[0], 0, 8 );
	$allStr .= $pre8Str;
} 

//--每9个字符9个字符地遍历字符串
$strLen = strlen( $allStr );
for( $i=0;$i<$strLen;$i++ ){	 
	$checkStr = substr( $allStr, $i, 9 );
	$res .= checkIfXXOO( $checkStr );
 
}
//输出结果
echo $res;

//-------------函数-----------------
//判断那几个字是否符合这XXOO规则
function checkIfXXOO($str) { 
	$str1   = substr ( $str, 0, 1 );
	$str2_4 = substr ( $str, 1, 3 );
	$str5   = substr ( $str, 4, 1 );
	$str6_8 = substr ( $str, 5, 3 );
	$str9   = substr ( $str, 8, 1 );
	
	//简单判断字符串是否aAAAxAAAa的规则
	if (! checkChar ( $str1 ) && 
		  checkChar ( $str2_4 ) && 
		! checkChar ( $str5 ) && 
		  checkChar ( $str6_8 ) && 
		! checkChar ( $str9 )) { 
		return $str5;
	}else{
		return '';
	}
}

//判断是否是大写
function checkChar($str) { 
	if (strtoupper ( $str ) === $str) {
		return true;
	} else {
		return false;
	}
}
运行一下,结果如下:
D:\www\htdocs\test>php input.php
linkedlist

转载于:https://my.oschina.net/u/141422/blog/98701

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值