字符串位移

闲来无事,想起上学时数据结构课程中有个字符串位移的小算法挺有意思,今天写了下,就测试了一个字符串,纯属娱乐。

public class Offset {

	public static  void swap(char [] chars , int position1 , int position2){
		if(position1 < chars.length && position2 < chars.length){
			char t = chars[position1];
			chars[position1] = chars[position2];
			chars[position2] = t;
		}
	}
	public static void reverse(char [] chars , int begin , int end){
		int i = begin;
		if (end < chars.length)
			while (i < end) {
				swap(chars , i++ , end--);
			}
	}
	public static void offset(char [] chars  , int n){
		n = n % chars.length;
		reverse(chars , 0 , n - 1);
		reverse(chars, n, chars.length - 1);
		reverse(chars, 0, chars.length - 1);
	}

	public static void main(String[] args) {
		char [] a = "abcdefg".toCharArray();
		offset(a , 3);
		for(char ch : a)
			System.out.print(ch);
	}
}

  

时间: 2024-12-08 23:44:40

字符串位移的相关文章

典型字符串匹配算法实现 - 单字符串匹配算法

博客源址:http://www.jimye.com/dian-xing-zi-fu-chuang-pi-pei-suan-fa-shi-xian/ 提示:要继续向下看 相信大家对快捷键ctrl+F是做什么用的都应该很熟悉了,无论是文本编辑.网页浏览等程序上它都意味着字符串搜索,我们提供一个关键字,它将找到当前页面上的所有该关键字所在的位置.关键字称为模式串,在文本T中寻找模式串P出现的所有出现的位置,解决这种问题的算法叫做字符串匹配算法.字符串匹配算法可以说是计算机科学中最古老.研究最广泛的问题

利用base64函数,对文件进行转码加密

设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的内容就是通过base64转码后传输的.Base64-encoded后, 数据要比原始数据多占用 33% 左右的空间. 利用base64加密文件: <?php //写文件路径 $file_url = 'upload/iampdf.pdf'; $file_encoded = 'encoded/iampdf.pdf'; //获取文件数据 $data = file_get_contents($file_url); //转

[转]Web登录中的信心安全问题

1. 一个简单的HTML例子看看用户信息安全 标准的HTML语法中,支持在form表单中使用<input></input>标签来创建一个HTTP提交的属性,现代的WEB登录中,常见的是下面这样的表单: <form action = "http://localhost:8080/Application/login" method = "POST"> 用户名:<input id="username" name

字符串匹配算法

字符串匹配问题的形式定义: 文本(Text)是一个长度为 n 的数组 T[1..n]: 模式(Pattern)是一个长度为 m 且 m≤n 的数组 P[1..m]: T 和 P 中的元素都属于有限的字母表 Σ 表: 如果 0≤s≤n-m,并且 T[s+1..s+m] = P[1..m],即对 1≤j≤m,有 T[s+j] = P[j],则说模式 P 在文本 T 中出现且位移为 s,且称 s 是一个有效位移(Valid Shift). 比如上图中,目标是找出所有在文本 T=abcabaabcaba

Java基础语法&lt;二&gt; 字符串String

1. 代码点与代码单元 Java字符串由char序列组成.大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示. length()方法将返回采用UTF-16编码表示的给定字符串所需要的代码单元数量 要想的到实际的长度,即代码点数量 int cpCount = str.codePointCount(0.str.length()) 调用str.charAt(n)将返回位置n的代码单元,n介于0-str.length()-1之间 要想得到第i个代码点 int ind

Redis之字符串

Redis 字符串 String 是redis最基本的类型,value 不仅可以是 String,也可以是数字. 使用 Strings 类型,可以完全实现目前 Memcached 的功能,并且效率更高.还可以享受 Redis 的定时持久化(可以选择 RDB 模式或者 AOF 模式). string类型是二进制安全的.意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象 string类型是Redis最基本的数据类型,一个键最大能存储512MB. 命令示例: set --

初识python(条件判断、循环控制、循环次数限制、常用数据类型、字符串格式化、列表常用操作、二进制运算、嵌套循环)

第一天学习 1.pycharm使用遇到的问题: 如果想运行程序A,一定要右键去执行程序A,而不能直接左下角run,那样的话可能会出现运行之前其他程序 pycharm小技巧: 1.多行全选,shift+tab整体往前缩进一个tab 2.多行全选,tab整体向后缩进一个tab 3.多行全选,ctrl+/注释所选代码,再次按ctrl+/注释取消所选代码 4.pycharm中切换3.5和2.7:file菜单-settings-project pycharmPreject--project interpr

【算法设计与分析基础】19、字符串匹配算法

package cn.xf.algorithm.ch07inputEnhancement; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Test; /** * * 功能:字符串匹配算法,(还有一种叫KMP算法的,也是很经典的算法,就是比较复杂) * * 第一步:对于给定的长度为m的模式和在模式文本中用到的字母表,按照上面的描述构造移动表 * 第二步:将模式与文本的开

PHP数组和字符串函数

1.1关于数组操作的函数 1.1.1range(start,end) 创建一个数组,值从start开始,一直到end结束 如果range里面的参数是数字,那么他直接按照数字大小的顺序排序,如果里面的参数是一个字符,那么他将按照ascii编码的顺序排序. 1.1.2array_rand() 随机取出一个数组的下标 array_rand存在第二个参数,默认情况下是1,代表获取一个数组元素的下标,他的数据类型等同于下标的数据类型,但是如果一次性随机获取多个元素的下标,他返回的是一个数组. 虽然他是随机